diff options
author | C. McEnroe | 2020-08-01 22:18:23 -0400 |
---|---|---|
committer | C. McEnroe | 2020-08-01 22:18:58 -0400 |
commit | bd8997ef09c7cf51d20c124e608601fab32f8f2a (patch) | |
tree | 3f2f508465c9c5503648393f7f50a27b985b215e | |
parent | 387f2c1fa3245a978a27b1b50072d11b6fc679f7 (diff) |
Check return value of asprintf
On the awful operating system GNU, asprintf leaves the destination pointer UNDEFINED on failure.
-rw-r--r-- | ignore.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/ignore.c b/ignore.c index 7fecb16..d53d138 100644 --- a/ignore.c +++ b/ignore.c @@ -45,17 +45,19 @@ const char *ignoreAdd(const char *pattern) { if (*ch == ' ') sp++; } char **dest = &ignore.patterns[ignore.len++]; + int n = 0; if (!ex && !sp) { - asprintf(dest, "%s!*@* * * *", pattern); + n = asprintf(dest, "%s!*@* * * *", pattern); } else if (sp < 1) { - asprintf(dest, "%s * * *", pattern); + n = asprintf(dest, "%s * * *", pattern); } else if (sp < 2) { - asprintf(dest, "%s * *", pattern); + n = asprintf(dest, "%s * *", pattern); } else if (sp < 3) { - asprintf(dest, "%s *", pattern); + n = asprintf(dest, "%s *", pattern); } else { *dest = strdup(pattern); } + if (n < 0) err(EX_OSERR, "asprintf"); if (!*dest) err(EX_OSERR, "strdup"); return *dest; } |