decode mime: refactor & cleanup

Partly to work around cppchecks:
[src/util-decode-mime.c:1085]: (error) Memory leak: url
pull/1195/head
Victor Julien 12 years ago
parent 54df86658c
commit f979e92f68

@ -348,7 +348,7 @@ MimeDecField * MimeDecFindField(const MimeDecEntity *entity, const char *name) {
* \return URL entry or NULL if the operation fails * \return URL entry or NULL if the operation fails
* *
*/ */
MimeDecUrl * MimeDecAddUrl(MimeDecEntity *entity) static MimeDecUrl * MimeDecAddUrl(MimeDecEntity *entity, uint8_t *url, uint32_t url_len, uint8_t flags)
{ {
MimeDecUrl *node = SCMalloc(sizeof(MimeDecUrl)); MimeDecUrl *node = SCMalloc(sizeof(MimeDecUrl));
if (unlikely(node == NULL)) { if (unlikely(node == NULL)) {
@ -357,7 +357,9 @@ MimeDecUrl * MimeDecAddUrl(MimeDecEntity *entity)
} }
memset(node, 0x00, sizeof(MimeDecUrl)); memset(node, 0x00, sizeof(MimeDecUrl));
if (entity != NULL) { node->url = url;
node->url_len = url_len;
node->url_flags = flags;
/* If list is empty, then set as head of list */ /* If list is empty, then set as head of list */
if (entity->url_list == NULL) { if (entity->url_list == NULL) {
@ -368,7 +370,6 @@ MimeDecUrl * MimeDecAddUrl(MimeDecEntity *entity)
node->next = entity->url_list; node->next = entity->url_list;
entity->url_list = node; entity->url_list = node;
} }
}
return node; return node;
} }
@ -1056,7 +1057,7 @@ static int FindUrlStrings(const uint8_t *line, uint32_t len,
/* Make sure remaining URL exists */ /* Make sure remaining URL exists */
if (tempUrlLen > 0) { if (tempUrlLen > 0) {
if (!(FindExistingUrl(entity, tempUrl, tempUrlLen))) {
/* Now look for numeric IP */ /* Now look for numeric IP */
if (IsIpv4Host(tempUrl, tempUrlLen)) { if (IsIpv4Host(tempUrl, tempUrlLen)) {
flags |= URL_IS_IP4; flags |= URL_IS_IP4;
@ -1068,17 +1069,8 @@ static int FindUrlStrings(const uint8_t *line, uint32_t len,
PrintChars(SC_LOG_DEBUG, "IP URL6", tempUrl, tempUrlLen); PrintChars(SC_LOG_DEBUG, "IP URL6", tempUrl, tempUrlLen);
} }
/* Update URL list */
MimeDecUrl *url = FindExistingUrl(entity, tempUrl, tempUrlLen);
if (url == NULL) {
/* Add URL list item */ /* Add URL list item */
url = MimeDecAddUrl(entity); MimeDecAddUrl(entity, tempUrl, tempUrlLen, flags);
if (url != NULL) {
url->url = tempUrl;
url->url_len = tempUrlLen;
url->url_flags |= flags;
}
} else { } else {
SCFree(tempUrl); SCFree(tempUrl);
} }

@ -218,7 +218,6 @@ void MimeDecFreeUrl(MimeDecUrl *url);
/* List functions */ /* List functions */
MimeDecField * MimeDecAddField(MimeDecEntity *entity); MimeDecField * MimeDecAddField(MimeDecEntity *entity);
MimeDecField * MimeDecFindField(const MimeDecEntity *entity, const char *name); MimeDecField * MimeDecFindField(const MimeDecEntity *entity, const char *name);
MimeDecUrl * MimeDecAddUrl(MimeDecEntity *entity);
MimeDecEntity * MimeDecAddEntity(MimeDecEntity *parent); MimeDecEntity * MimeDecAddEntity(MimeDecEntity *parent);
/* Helper functions */ /* Helper functions */

Loading…
Cancel
Save