From 0e39cf9275c6a6f965e364792527c2704327bd02 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 12 Dec 2010 20:01:14 -0600 Subject: [PATCH] Ensure stdin args are correctly terminated And don't require pm_targets to be empty to read from stdin either. Signed-off-by: Dan McGee --- src/pacman/pacman.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index e078aaba..39390a53 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -1306,15 +1306,15 @@ int main(int argc, char *argv[]) cleanup(ret); } - /* read package arguments from stdin if we have none yet */ - if(!pm_targets && !isatty(fileno(stdin))) { + /* we also support reading targets from stdin */ + if(!isatty(fileno(stdin))) { char line[PATH_MAX]; int i = 0; while(i < PATH_MAX && (line[i] = fgetc(stdin)) != EOF) { if(isspace((unsigned char)line[i])) { - line[i] = '\0'; /* avoid adding zero length arg when multiple spaces separate args */ if(i > 0) { + line[i] = '\0'; pm_targets = alpm_list_add(pm_targets, strdup(line)); i = 0; } @@ -1330,6 +1330,7 @@ int main(int argc, char *argv[]) /* end of stream -- check for data still in line buffer */ if(i > 0) { + line[i] = '\0'; pm_targets = alpm_list_add(pm_targets, strdup(line)); } if (!freopen(ctermid(NULL), "r", stdin)) {