From: Paul Eggert <eggert@cs.ucla.edu>
Date: Mon, 2 Aug 2021 00:42:56 +0000 (-0700)
Subject: sh-quote: improve -fanalyzer malloc checking
X-Git-Tag: v1.0~2746
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=65597d95a3783a5242ca0908e858dc1de5fda46b;p=gnulib.git

sh-quote: improve -fanalyzer malloc checking
---

diff --git a/ChangeLog b/ChangeLog
index 45fd8cad54..6c81691fba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,7 +5,7 @@
 	* lib/canonicalize.h, lib/dfa.h, lib/dirname.h, lib/exclude.h:
 	* lib/filenamecat.h, lib/malloca.h, lib/modechange.h:
 	* lib/mountlist.h, lib/pagealign_alloc.h, lib/quotearg.h:
-	* lib/readutmp.h, lib/savedir.h:
+	* lib/readutmp.h, lib/savedir.h, lib/sh-quote.h:
 	Add malloc-related attributes and include stdlib.h as needed.
 	* lib/dfa.c: Include verify.h.
 	(assume_nonnull): New macro.
diff --git a/lib/sh-quote.h b/lib/sh-quote.h
index e543e40639..0101036e5f 100644
--- a/lib/sh-quote.h
+++ b/lib/sh-quote.h
@@ -23,6 +23,7 @@
    "$", '*', '?' etc. in a special way.  */
 
 #include <stddef.h>
+#include <stdlib.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -36,11 +37,15 @@ extern size_t shell_quote_length (const char *string);
 extern char * shell_quote_copy (char *restrict p, const char *string);
 
 /* Returns the freshly allocated quoted string.  */
-extern char * shell_quote (const char *string);
+extern char * shell_quote (const char *string)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE
+  _GL_ATTRIBUTE_RETURNS_NONNULL;
 
 /* Returns a freshly allocated string containing all argument strings, quoted,
    separated through spaces.  */
-extern char * shell_quote_argv (const char * const *argv);
+extern char * shell_quote_argv (const char * const *argv)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE
+  _GL_ATTRIBUTE_RETURNS_NONNULL;
 
 #ifdef __cplusplus
 }