]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[Core] scan-build: fix false-positive memory leak in switch_xml_set_attr_d and switch...
authorAndrey Volk <andywolk@gmail.com>
Fri, 23 Apr 2021 17:03:36 +0000 (20:03 +0300)
committerAndrey Volk <andywolk@gmail.com>
Tue, 19 Oct 2021 17:30:18 +0000 (20:30 +0300)
src/include/switch_core.h
src/include/switch_utils.h
src/switch_utils.c
src/switch_xml.c

index 9c9f6c490ce043fa93025170b46c3327c52693a1..7592362c5cbf19729e17d9f816e8271d5e375f9f 100644 (file)
@@ -243,14 +243,6 @@ static inline void *switch_must_realloc(void *_b, size_t _z)
        return m;
 }
 
-static inline char *switch_must_strdup(const char *_s)
-{
-       char *s = strdup(_s);
-       switch_assert(s);
-       return s;
-}
-
-
 /*!
   \defgroup core1 Core Library
   \ingroup FREESWITCH
index 24c6151331f55a3b99c069e0b2c5fe841ee05c5f..89983f3920466f5836014646cf4d9f1143759510 100644 (file)
@@ -1487,6 +1487,8 @@ SWITCH_DECLARE(unsigned long) switch_getpid(void);
 SWITCH_DECLARE(switch_status_t) switch_digest(const char *digest_name, unsigned char **digest, const void *input, switch_size_t inputLen, unsigned int *outputlen);
 SWITCH_DECLARE(switch_status_t) switch_digest_string(const char *digest_name, char **digest_str, const void *input, switch_size_t inputLen, unsigned int *outputlen);
 
+char *switch_must_strdup(const char *_s);
+
 SWITCH_END_EXTERN_C
 #endif
 /* For Emacs:
index 85e12f0488131969bfbaaa1ea31a4d4713ff8be0..9b02ecc870afafdf2d97b683a799864dff2b75c4 100644 (file)
@@ -4639,6 +4639,13 @@ SWITCH_DECLARE(switch_status_t) switch_digest_string(const char *digest_name, ch
        return status;
 }
 
+char *switch_must_strdup(const char *_s)
+{
+       char *s = strdup(_s);
+       switch_assert(s);
+       return s;
+}
+
 /* For Emacs:
  * Local Variables:
  * mode:c
index b70f6bfe7469258d90bcd2b1f09fda65be849689..a48f9ab96d8d936beefff8919e288c1947120c20 100644 (file)
@@ -3040,7 +3040,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_set_attr(switch_xml_t xml, const char *n
 SWITCH_DECLARE(switch_xml_t) switch_xml_set_attr_d(switch_xml_t xml, const char *name, const char *value)
 {
        if (!xml) return NULL;
-       return switch_xml_set_attr(switch_xml_set_flag(xml, SWITCH_XML_DUP), strdup(name), strdup(switch_str_nil(value)));
+       return switch_xml_set_attr(switch_xml_set_flag(xml, SWITCH_XML_DUP), switch_must_strdup(name), switch_must_strdup(switch_str_nil(value)));
 }
 
 /* Sets the given tag attribute or adds a new attribute if not found. A value
@@ -3048,7 +3048,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_set_attr_d(switch_xml_t xml, const char
 SWITCH_DECLARE(switch_xml_t) switch_xml_set_attr_d_buf(switch_xml_t xml, const char *name, const char *value)
 {
        if (!xml) return NULL;
-       return switch_xml_set_attr(switch_xml_set_flag(xml, SWITCH_XML_DUP), strdup(name), strdup(value));
+       return switch_xml_set_attr(switch_xml_set_flag(xml, SWITCH_XML_DUP), switch_must_strdup(name), switch_must_strdup(value));
 }
 
 /* sets a flag for the given tag and returns the tag */