[Core] scan-build: fix false-positive memory leak in switch_xml_set_attr_d and switch_xml_set_attr_d_buf

This commit is contained in:
Andrey Volk 2021-04-23 20:03:36 +03:00
parent 781180ff48
commit c35a3bb4db
4 changed files with 11 additions and 10 deletions

View 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

View 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:

View 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

View 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 */