summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--librabbitmq/amqp_url.c5
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;
}