From 38d02c5d857ecea3405c3f48e64906764329f1a1 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Fri, 24 Oct 2008 13:49:16 +0200 Subject: s3:net conf: support dangling parameters by specifying "" as the section name. for {get,set,del}parm Michael --- source3/utils/net_conf.c | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c index 663c5925c7..864ca9cc18 100644 --- a/source3/utils/net_conf.c +++ b/source3/utils/net_conf.c @@ -769,10 +769,16 @@ static int net_conf_setparm(struct net_context *c, struct smbconf_ctx *conf_ctx, net_conf_setparm_usage(c, argc, argv); goto done; } - service = talloc_strdup(mem_ctx, argv[0]); - if (service == NULL) { - d_printf("error: out of memory!\n"); - goto done; + /* + * NULL service name means "dangling parameters" to libsmbconf. + * We use the empty string from the command line for this purpose. + */ + if (strlen(argv[0]) != 0) { + service = talloc_strdup(mem_ctx, argv[0]); + if (service == NULL) { + d_printf("error: out of memory!\n"); + goto done; + } } param = strlower_talloc(mem_ctx, argv[1]); if (param == NULL) { @@ -821,10 +827,16 @@ static int net_conf_getparm(struct net_context *c, struct smbconf_ctx *conf_ctx, net_conf_getparm_usage(c, argc, argv); goto done; } - service = talloc_strdup(mem_ctx, argv[0]); - if (service == NULL) { - d_printf("error: out of memory!\n"); - goto done; + /* + * NULL service name means "dangling parameters" to libsmbconf. + * We use the empty string from the command line for this purpose. + */ + if (strlen(argv[0]) != 0) { + service = talloc_strdup(mem_ctx, argv[0]); + if (service == NULL) { + d_printf("error: out of memory!\n"); + goto done; + } } param = strlower_talloc(mem_ctx, argv[1]); if (param == NULL) { @@ -871,10 +883,16 @@ static int net_conf_delparm(struct net_context *c, struct smbconf_ctx *conf_ctx, net_conf_delparm_usage(c, argc, argv); goto done; } - service = talloc_strdup(mem_ctx, argv[0]); - if (service == NULL) { - d_printf("error: out of memory!\n"); - goto done; + /* + * NULL service name means "dangling parameters" to libsmbconf. + * We use the empty string from the command line for this purpose. + */ + if (strlen(argv[0]) != 0) { + service = talloc_strdup(mem_ctx, argv[0]); + if (service == NULL) { + d_printf("error: out of memory!\n"); + goto done; + } } param = strlower_talloc(mem_ctx, argv[1]); if (param == NULL) { -- cgit