Просмотр исходного кода

Revert "lib/utils_cmd.c - Multiple resource leaks"

This reverts commit 14e76a2a1b378e0853811b7d4a4761ccf9e16c00.
abrist 10 лет назад
Родитель
Сommit
4c97453cd6
1 измененных файлов с 7 добавлено и 22 удалено
  1. 7 22
      lib/utils_cmd.c

+ 7 - 22
lib/utils_cmd.c

@@ -294,7 +294,7 @@ int
 cmd_run (const char *cmdstring, output * out, output * err, int flags)
 {
 	int fd, pfd_out[2], pfd_err[2];
-	int i = 0, argc, rst;
+	int i = 0, argc;
 	size_t cmdlen;
 	char **argv = NULL;
 	char *cmd = NULL;
@@ -318,16 +318,11 @@ cmd_run (const char *cmdstring, output * out, output * err, int flags)
 	cmd[cmdlen] = '\0';
 
 	/* This is not a shell, so we don't handle "???" */
-	if (strstr (cmdstring, "\"")) {
-		free(cmd);
-		return -1;
-	}
+	if (strstr (cmdstring, "\"")) return -1;
 
 	/* allow single quotes, but only if non-whitesapce doesn't occur on both sides */
-	if (strstr (cmdstring, " ' ") || strstr (cmdstring, "'''")) {
-		free(cmd);
+	if (strstr (cmdstring, " ' ") || strstr (cmdstring, "'''"))
 		return -1;
-	}
 
 	/* each arg must be whitespace-separated, so args can be a maximum
 	 * of (len / 2) + 1. We add 1 extra to the mix for NULL termination */
@@ -336,7 +331,6 @@ cmd_run (const char *cmdstring, output * out, output * err, int flags)
 
 	if (argv == NULL) {
 		printf ("%s\n", _("Could not malloc argv array in popen()"));
-		free(cmd);
 		return -1;
 	}
 
@@ -347,11 +341,8 @@ cmd_run (const char *cmdstring, output * out, output * err, int flags)
 
 		if (strstr (str, "'") == str) {	/* handle SIMPLE quoted strings */
 			str++;
-			if (!strstr (str, "'")) { /* balanced? */
-				free(cmd);
-				free(argv);
-				return -1;
-			}
+			if (!strstr (str, "'"))
+				return -1;							/* balanced? */
 			cmd = 1 + strstr (str, "'");
 			str[strcspn (str, "'")] = 0;
 		}
@@ -361,23 +352,17 @@ cmd_run (const char *cmdstring, output * out, output * err, int flags)
 				str[strcspn (str, " \t\r\n")] = 0;
 			}
 			else {
-				free(cmd);
 				cmd = NULL;
 			}
 		}
 
-		if (cmd && strlen (cmd) == strspn (cmd, " \t\r\n")) {
-			free(cmd);
+		if (cmd && strlen (cmd) == strspn (cmd, " \t\r\n"))
 			cmd = NULL;
-		}
 
 		argv[i++] = str;
 	}
 
-	rst = cmd_run_array (argv, out, err, flags);
-	free(cmd);
-	free(argv);
-	return rst;
+	return cmd_run_array (argv, out, err, flags);
 }
 
 int