diff options
-rw-r--r-- | librabbitmq/amqp_url.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/librabbitmq/amqp_url.c b/librabbitmq/amqp_url.c index 636a9de..6079106 100644 --- a/librabbitmq/amqp_url.c +++ b/librabbitmq/amqp_url.c @@ -43,6 +43,7 @@ #endif #include "amqp_private.h" +#include <limits.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> @@ -92,14 +93,14 @@ static char find_delim(char **pp, int colon_and_at_sign_are_delims) int chars; int res = sscanf(from, "%2x%n", &val, &chars); - if (res == EOF || res < 1 || chars != 2) + if (res == EOF || res < 1 || chars != 2 || val > CHAR_MAX) /* Return a surprising delimiter to force an error. */ { return '%'; } - *to++ = val; + *to++ = (char)val; from += 2; break; } |