misc-progs: Fix passing argument list

Message ID 20220623114356.2394544-1-michael.tremer@ipfire.org
State Accepted
Commit 49471f05d53c3df70c47e98d068edb745cf3a816
Headers
Series misc-progs: Fix passing argument list |

Commit Message

Michael Tremer June 23, 2022, 11:43 a.m. UTC
  The run() function expects all arguments without the basename of the
program.

This regression was introduced in a609195a26f2666a177b988a6691bc27b10e6d64.

Fixes: #12886
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 src/misc-progs/backupctrl.c  | 2 +-
 src/misc-progs/extrahdctrl.c | 2 +-
 src/misc-progs/getipstat.c   | 2 +-
 src/misc-progs/mpfirectrl.c  | 2 +-
 src/misc-progs/pakfire.c     | 2 +-
 src/misc-progs/sambactrl.c   | 4 ++--
 6 files changed, 7 insertions(+), 7 deletions(-)
  

Comments

Peter Müller June 23, 2022, 1:20 p.m. UTC | #1
Acked-by: Peter Müller <peter.mueller@ipfire.org>

> The run() function expects all arguments without the basename of the
> program.
> 
> This regression was introduced in a609195a26f2666a177b988a6691bc27b10e6d64.
> 
> Fixes: #12886
> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
> ---
>  src/misc-progs/backupctrl.c  | 2 +-
>  src/misc-progs/extrahdctrl.c | 2 +-
>  src/misc-progs/getipstat.c   | 2 +-
>  src/misc-progs/mpfirectrl.c  | 2 +-
>  src/misc-progs/pakfire.c     | 2 +-
>  src/misc-progs/sambactrl.c   | 4 ++--
>  6 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/src/misc-progs/backupctrl.c b/src/misc-progs/backupctrl.c
> index 0a85141ca..bb2ca69ef 100644
> --- a/src/misc-progs/backupctrl.c
> +++ b/src/misc-progs/backupctrl.c
> @@ -11,5 +11,5 @@ int main(int argc, char** argv) {
>  	if (!initsetuid())
>  		exit(1);
>  
> -	return run("/var/ipfire/backup/bin/backup.pl", argv);
> +	return run("/var/ipfire/backup/bin/backup.pl", argv + 1);
>  }
> diff --git a/src/misc-progs/extrahdctrl.c b/src/misc-progs/extrahdctrl.c
> index 49a25387f..255050acd 100644
> --- a/src/misc-progs/extrahdctrl.c
> +++ b/src/misc-progs/extrahdctrl.c
> @@ -11,5 +11,5 @@ int main(int argc, char** argv) {
>  	if (!initsetuid())
>  		exit(1);
>  
> -	return run("/var/ipfire/extrahd/bin/extrahd.pl", argv);
> +	return run("/var/ipfire/extrahd/bin/extrahd.pl", argv + 1);
>  }
> diff --git a/src/misc-progs/getipstat.c b/src/misc-progs/getipstat.c
> index 37e01c81a..66d5b5a92 100644
> --- a/src/misc-progs/getipstat.c
> +++ b/src/misc-progs/getipstat.c
> @@ -27,7 +27,7 @@ int main(int argc, char** argv)
>  	// but /sbin/iptables is actually a symlink to /sbin/xtables-legacy-multi hence that program is executed
>  	// however without the notion that it was called as "iptables". So we have to pass "iptables" as first
>  	// argument.
> -	char *args[10] = {"iptables", "--list", "--verbose", "--numeric", "--wait", "5", NULL, NULL, NULL, NULL};
> +	char *args[] = {"--list", "--verbose", "--numeric", "--wait", "5", NULL, NULL, NULL, NULL};
>  	char *usage = "getipstat [-x][-f|-n|-m]";
>  	unsigned int pcount = 6;
>  	unsigned int table_set = 0;
> diff --git a/src/misc-progs/mpfirectrl.c b/src/misc-progs/mpfirectrl.c
> index a71789c0f..4ea1fb543 100644
> --- a/src/misc-progs/mpfirectrl.c
> +++ b/src/misc-progs/mpfirectrl.c
> @@ -11,5 +11,5 @@ int main(int argc, char** argv) {
>  	if (!initsetuid())
>  		exit(1);
>  
> -	return run("/var/ipfire/mpfire/bin/mpfire.pl", argv);
> +	return run("/var/ipfire/mpfire/bin/mpfire.pl", argv + 1);
>  }
> diff --git a/src/misc-progs/pakfire.c b/src/misc-progs/pakfire.c
> index 93a18e604..35bea8677 100644
> --- a/src/misc-progs/pakfire.c
> +++ b/src/misc-progs/pakfire.c
> @@ -11,5 +11,5 @@ int main(int argc, char** argv) {
>  	if (!initsetuid())
>  		exit(1);
>  
> -	return run("/opt/pakfire/pakfire", argv);
> +	return run("/opt/pakfire/pakfire", argv + 1);
>  }
> diff --git a/src/misc-progs/sambactrl.c b/src/misc-progs/sambactrl.c
> index 501535799..38c26089c 100644
> --- a/src/misc-progs/sambactrl.c
> +++ b/src/misc-progs/sambactrl.c
> @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) {
>  		snprintf(command, BUFFER_SIZE-1, "/usr/sbin/useradd -c 'Samba User' -m -g sambauser -s /bin/false %s >/dev/null", argv[2]);
>  		safe_system(command);
>  
> -		run("/usr/sbin/samba-change-password", argv + 1);
> +		run("/usr/sbin/samba-change-password", argv + 2);
>  
>  	} else if (strcmp(argv[1], "smbchangepw") == 0) {
>  		if (!is_valid_argument_alnum(argv[2])) {
> @@ -90,7 +90,7 @@ int main(int argc, char *argv[]) {
>  			exit(2);
>  		}
>  
> -		run("/usr/sbin/samba-change-password", argv + 1);
> +		run("/usr/sbin/samba-change-password", argv + 2);
>  
>  	} else if (strcmp(argv[1], "readsmbpasswd") == 0) {
>  		safe_system("/bin/chown root:nobody /var/ipfire/samba/private >/dev/null");
  

Patch

diff --git a/src/misc-progs/backupctrl.c b/src/misc-progs/backupctrl.c
index 0a85141ca..bb2ca69ef 100644
--- a/src/misc-progs/backupctrl.c
+++ b/src/misc-progs/backupctrl.c
@@ -11,5 +11,5 @@  int main(int argc, char** argv) {
 	if (!initsetuid())
 		exit(1);
 
-	return run("/var/ipfire/backup/bin/backup.pl", argv);
+	return run("/var/ipfire/backup/bin/backup.pl", argv + 1);
 }
diff --git a/src/misc-progs/extrahdctrl.c b/src/misc-progs/extrahdctrl.c
index 49a25387f..255050acd 100644
--- a/src/misc-progs/extrahdctrl.c
+++ b/src/misc-progs/extrahdctrl.c
@@ -11,5 +11,5 @@  int main(int argc, char** argv) {
 	if (!initsetuid())
 		exit(1);
 
-	return run("/var/ipfire/extrahd/bin/extrahd.pl", argv);
+	return run("/var/ipfire/extrahd/bin/extrahd.pl", argv + 1);
 }
diff --git a/src/misc-progs/getipstat.c b/src/misc-progs/getipstat.c
index 37e01c81a..66d5b5a92 100644
--- a/src/misc-progs/getipstat.c
+++ b/src/misc-progs/getipstat.c
@@ -27,7 +27,7 @@  int main(int argc, char** argv)
 	// but /sbin/iptables is actually a symlink to /sbin/xtables-legacy-multi hence that program is executed
 	// however without the notion that it was called as "iptables". So we have to pass "iptables" as first
 	// argument.
-	char *args[10] = {"iptables", "--list", "--verbose", "--numeric", "--wait", "5", NULL, NULL, NULL, NULL};
+	char *args[] = {"--list", "--verbose", "--numeric", "--wait", "5", NULL, NULL, NULL, NULL};
 	char *usage = "getipstat [-x][-f|-n|-m]";
 	unsigned int pcount = 6;
 	unsigned int table_set = 0;
diff --git a/src/misc-progs/mpfirectrl.c b/src/misc-progs/mpfirectrl.c
index a71789c0f..4ea1fb543 100644
--- a/src/misc-progs/mpfirectrl.c
+++ b/src/misc-progs/mpfirectrl.c
@@ -11,5 +11,5 @@  int main(int argc, char** argv) {
 	if (!initsetuid())
 		exit(1);
 
-	return run("/var/ipfire/mpfire/bin/mpfire.pl", argv);
+	return run("/var/ipfire/mpfire/bin/mpfire.pl", argv + 1);
 }
diff --git a/src/misc-progs/pakfire.c b/src/misc-progs/pakfire.c
index 93a18e604..35bea8677 100644
--- a/src/misc-progs/pakfire.c
+++ b/src/misc-progs/pakfire.c
@@ -11,5 +11,5 @@  int main(int argc, char** argv) {
 	if (!initsetuid())
 		exit(1);
 
-	return run("/opt/pakfire/pakfire", argv);
+	return run("/opt/pakfire/pakfire", argv + 1);
 }
diff --git a/src/misc-progs/sambactrl.c b/src/misc-progs/sambactrl.c
index 501535799..38c26089c 100644
--- a/src/misc-progs/sambactrl.c
+++ b/src/misc-progs/sambactrl.c
@@ -82,7 +82,7 @@  int main(int argc, char *argv[]) {
 		snprintf(command, BUFFER_SIZE-1, "/usr/sbin/useradd -c 'Samba User' -m -g sambauser -s /bin/false %s >/dev/null", argv[2]);
 		safe_system(command);
 
-		run("/usr/sbin/samba-change-password", argv + 1);
+		run("/usr/sbin/samba-change-password", argv + 2);
 
 	} else if (strcmp(argv[1], "smbchangepw") == 0) {
 		if (!is_valid_argument_alnum(argv[2])) {
@@ -90,7 +90,7 @@  int main(int argc, char *argv[]) {
 			exit(2);
 		}
 
-		run("/usr/sbin/samba-change-password", argv + 1);
+		run("/usr/sbin/samba-change-password", argv + 2);
 
 	} else if (strcmp(argv[1], "readsmbpasswd") == 0) {
 		safe_system("/bin/chown root:nobody /var/ipfire/samba/private >/dev/null");