diff options
author | June McEnroe <june@causal.agency> | 2020-08-01 22:18:23 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-08-01 22:18:58 -0400 |
commit | bd8997ef09c7cf51d20c124e608601fab32f8f2a (patch) | |
tree | 3f2f508465c9c5503648393f7f50a27b985b215e | |
parent | Use ldd to automatically copy libs into chroot (diff) | |
download | catgirl-bd8997ef09c7cf51d20c124e608601fab32f8f2a.tar.gz catgirl-bd8997ef09c7cf51d20c124e608601fab32f8f2a.zip |
Check return value of asprintf
On the awful operating system GNU, asprintf leaves the destination pointer UNDEFINED on failure.
Diffstat (limited to '')
-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; } |