summaryrefslogtreecommitdiffstats
path: root/bin/sh/alias.c
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2014-04-14 21:26:34 +0000
committerjilles <jilles@FreeBSD.org>2014-04-14 21:26:34 +0000
commit813864aadb85d56ff09c1dcac212be2307bba3ed (patch)
tree8263de031cf1c7ceb7cb3e0f527b28807f170218 /bin/sh/alias.c
parent35cde107ba8c9d8dab202424e39a194305eb6524 (diff)
downloadFreeBSD-src-813864aadb85d56ff09c1dcac212be2307bba3ed.zip
FreeBSD-src-813864aadb85d56ff09c1dcac212be2307bba3ed.tar.gz
MFC r263777: sh: Fix possible memory leaks and double frees with unexpected
SIGINT.
Diffstat (limited to 'bin/sh/alias.c')
-rw-r--r--bin/sh/alias.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/bin/sh/alias.c b/bin/sh/alias.c
index 9ebdcb5..21f3f44 100644
--- a/bin/sh/alias.c
+++ b/bin/sh/alias.c
@@ -180,6 +180,7 @@ printaliases(void)
int i, j;
struct alias **sorted, *ap;
+ INTOFF;
sorted = ckmalloc(aliases * sizeof(*sorted));
j = 0;
for (i = 0; i < ATABSIZE; i++)
@@ -187,9 +188,13 @@ printaliases(void)
if (*ap->name != '\0')
sorted[j++] = ap;
qsort(sorted, aliases, sizeof(*sorted), comparealiases);
- for (i = 0; i < aliases; i++)
+ for (i = 0; i < aliases; i++) {
printalias(sorted[i]);
+ if (int_pending())
+ break;
+ }
ckfree(sorted);
+ INTON;
}
int
OpenPOWER on IntegriCloud