fix: cppchecker complains on null. Not sure if that should be a valid call. I guess @cjbrigato will let me know if I messed up

This commit is contained in:
iceman1001 2020-04-28 13:30:43 +02:00
commit f1cdb68c52

View file

@ -780,8 +780,7 @@ int json_printf_array(struct json_out *out, va_list *ap) {
} }
#ifdef _WIN32 #ifdef _WIN32
int cs_win_vsnprintf(char *str, size_t size, const char *format, int cs_win_vsnprintf(char *str, size_t size, const char *format, va_list ap) WEAK;
va_list ap) WEAK;
int cs_win_vsnprintf(char *str, size_t size, const char *format, va_list ap) { int cs_win_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
int res = _vsnprintf(str, size, format, ap); int res = _vsnprintf(str, size, format, ap);
va_end(ap); va_end(ap);
@ -863,14 +862,21 @@ struct json_scanf_info {
int json_unescape(const char *src, int slen, char *dst, int dlen) WEAK; int json_unescape(const char *src, int slen, char *dst, int dlen) WEAK;
int json_unescape(const char *src, int slen, char *dst, int dlen) { int json_unescape(const char *src, int slen, char *dst, int dlen) {
char *send = (char *) src + slen, *dend = dst + dlen, *orig_dst = dst, *p; if (dst == NULL || dlen == 0)
return JSON_STRING_INVALID;
char *send = (char *) src + slen;
char *dend = dst + dlen;
char *orig_dst = dst;
char *p;
const char *esc1 = "\"\\/bfnrt", *esc2 = "\"\\/\b\f\n\r\t"; const char *esc1 = "\"\\/bfnrt", *esc2 = "\"\\/\b\f\n\r\t";
while (src < send) { while (src < send) {
if (*src == '\\') { if (*src == '\\') {
if (++src >= send) return JSON_STRING_INCOMPLETE; if (++src >= send) { return JSON_STRING_INCOMPLETE; }
if (*src == 'u') { if (*src == 'u') {
if (send - src < 5) return JSON_STRING_INCOMPLETE; if (send - src < 5) { return JSON_STRING_INCOMPLETE; }
/* Here we go: this is a \u.... escape. Process simple one-byte chars */ /* Here we go: this is a \u.... escape. Process simple one-byte chars */
if (src[1] == '0' && src[2] == '0') { if (src[1] == '0' && src[2] == '0') {
/* This is \u00xx character from the ASCII range */ /* This is \u00xx character from the ASCII range */
@ -881,12 +887,16 @@ int json_unescape(const char *src, int slen, char *dst, int dlen) {
return JSON_STRING_INVALID; return JSON_STRING_INVALID;
} }
} else if ((p = (char *) strchr(esc1, *src)) != NULL) { } else if ((p = (char *) strchr(esc1, *src)) != NULL) {
if (dst < dend) *dst = esc2[p - esc1]; if (dst < dend) {
*dst = esc2[p - esc1];
}
} else { } else {
return JSON_STRING_INVALID; return JSON_STRING_INVALID;
} }
} else { } else {
if (dst < dend) *dst = *src; if (dst < dend) {
*dst = *src;
}
} }
dst++; dst++;
src++; src++;