From bee0cd776219fc3cd6ac6a932a1d25b944c299a0 Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Mon, 22 Aug 2016 20:36:24 -0700 Subject: See if *this* convinces the compiler that valuelen and value will be set. Change-Id: I2a7715ac3255502f244a0d0a7e588b3a44c34f11 Reviewed-on: https://code.wireshark.org/review/17258 Reviewed-by: Guy Harris --- epan/media_params.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'epan/media_params.c') diff --git a/epan/media_params.c b/epan/media_params.c index bf08f03f3a..c216b37e73 100644 --- a/epan/media_params.c +++ b/epan/media_params.c @@ -34,8 +34,8 @@ #include static const char * -ws_get_next_media_type_parameter(const char *pos, int *retnamelen, - const char **retvalue, int *retvaluelen, +ws_get_next_media_type_parameter(const char *pos, gsize *retnamelen, + const char **retvalue, gsize *retvaluelen, const char **nextp) { const char *p, *namep, *valuep; @@ -56,7 +56,7 @@ ws_get_next_media_type_parameter(const char *pos, int *retnamelen, beginning of parameter value), or ';' (end of parameter). */ while ((c = *p) != '\0' && c != '=' && c != ';') p++; - *retnamelen = (int) (p - namep); + *retnamelen = (gsize) (p - namep); if (c == '\0') { /* End of string, so end of parameter, no parameter value */ if (retvalue != NULL) @@ -91,7 +91,7 @@ ws_get_next_media_type_parameter(const char *pos, int *retnamelen, /* End-of-string. We're done. (XXX - this is an error.) */ if (retvaluelen != NULL) { - *retvaluelen = (int) (p - valuep); + *retvaluelen = (gsize) (p - valuep); } *nextp = p; return namep; @@ -130,14 +130,14 @@ ws_get_next_media_type_parameter(const char *pos, int *retnamelen, if (c == '\0') { /* End of string, so end of parameter */ if (retvaluelen != NULL) { - *retvaluelen = (int) (p - valuep); + *retvaluelen = (gsize) (p - valuep); } *nextp = p; return namep; } /* End of parameter; point past the terminating ';' */ if (retvaluelen != NULL) { - *retvaluelen = (int) (p - valuep); + *retvaluelen = (gsize) (p - valuep); } *nextp = p + 1; return namep; @@ -148,17 +148,25 @@ ws_find_media_type_parameter(const char *parameters, const char *key) { const char *p, *name, *value; char c; - int keylen, namelen, valuelen; + gsize keylen, namelen, valuelen; char *valuestr, *vp; - if(!parameters || !*parameters || !key || strlen(key) == 0) + if (parameters == NULL || key == NULL) /* we won't be able to find anything */ return NULL; - keylen = (int) strlen(key); + keylen = (gsize) strlen(key); + if (keylen == 0) { + /* There's no parameter name to searh for */ + return NULL; + } p = parameters; + if (*p == '\0') { + /* There are no parameters in which to search */ + return NULL; + } - while (*p) { + do { /* Get the next parameter. */ name = ws_get_next_media_type_parameter(p, &namelen, &value, &valuelen, &p); @@ -172,7 +180,7 @@ ws_find_media_type_parameter(const char *parameters, const char *key) /* Yes. */ break; } - } + } while (*p); if (value == NULL) { /* The parameter doesn't have a value. */ -- cgit v1.2.3