From bd8997ef09c7cf51d20c124e608601fab32f8f2a Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sat, 1 Aug 2020 22:18:23 -0400 Subject: Check return value of asprintf On the awful operating system GNU, asprintf leaves the destination pointer UNDEFINED on failure. --- ignore.c | 10 ++++++---- 1 file 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; } -- cgit 1.4.1