From bba72469721fd3c7628fda61e3081f802fe73907 Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Mon, 17 Feb 2025 18:51:13 +0000 Subject: [PATCH] Ensure argument for isprint and isxdigit is in the correct range #1565 --- src/MQTTPacket.c | 4 ++-- src/MQTTVersion.c | 4 ++-- src/Proxy.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/MQTTPacket.c b/src/MQTTPacket.c index 40cb4d415..a67c92041 100644 --- a/src/MQTTPacket.c +++ b/src/MQTTPacket.c @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2024 IBM Corp. and Ian Craggs + * Copyright (c) 2009, 2025 IBM Corp. and Ian Craggs * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 @@ -860,7 +860,7 @@ int MQTTPacket_formatPayload(int buflen, char* buf, int payloadlen, char* payloa for (i = 0; i < payloadlen; i++) { - if (isprint(payload[i])) + if (isprint((unsigned char)payload[i])) { if (pos >= buflen) break; diff --git a/src/MQTTVersion.c b/src/MQTTVersion.c index 92cd020c1..bba9708de 100644 --- a/src/MQTTVersion.c +++ b/src/MQTTVersion.c @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2020 IBM Corp. + * Copyright (c) 2012, 2025 IBM Corp. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 @@ -96,7 +96,7 @@ char* FindString(char* filename, const char* eyecatcher_input) char* ptr = value; c = fgetc(infile); /* skip space */ c = fgetc(infile); - while (isprint(c)) + while (isprint((unsigned char)c)) { *ptr++ = c; c = fgetc(infile); diff --git a/src/Proxy.c b/src/Proxy.c index bb9ad6826..60769f59b 100644 --- a/src/Proxy.c +++ b/src/Proxy.c @@ -272,7 +272,7 @@ void Proxy_specialChars(char* p0, char* p1, b64_size_t *basic_auth_in_len) { *p0++ = *p1++; } - else if (isxdigit(*(p1 + 1)) && isxdigit(*(p1 + 2))) + else if (isxdigit((unsigned char)*(p1 + 1)) && isxdigit((unsigned char)*(p1 + 2))) { /* next 2 characters are hexa digits */ char hex[3]; @@ -350,4 +350,4 @@ int Proxy_setHTTPProxy(Clients* aClient, char* source, char** dest, char** auth_ } exit: return rc; -} \ No newline at end of file +}