summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/utils/net_conf.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c
index 663c5925c78..864ca9cc181 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) {