aboutsummaryrefslogtreecommitdiffstats
path: root/epan/media_params.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2016-08-22 20:36:24 -0700
committerGuy Harris <guy@alum.mit.edu>2016-08-23 03:36:55 +0000
commitbee0cd776219fc3cd6ac6a932a1d25b944c299a0 (patch)
treee2e049b1f0eaa647da589b9dedd43547fd106590 /epan/media_params.c
parent9edb7afa84cc694eddc563e794492f8dd1fe61ca (diff)
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 <guy@alum.mit.edu>
Diffstat (limited to 'epan/media_params.c')
-rw-r--r--epan/media_params.c30
1 files changed, 19 insertions, 11 deletions
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 <epan/media_params.h>
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. */