]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
iconvdata: Fix invalid pointer arithmetic in ANSI_X3.110 module
authorFlorian Weimer <fweimer@redhat.com>
Fri, 28 Nov 2025 10:46:09 +0000 (11:46 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Fri, 28 Nov 2025 12:20:39 +0000 (13:20 +0100)
The expression inptr + 1 can technically be invalid: if inptr == inend,
inptr may point one element past the end of an array.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
iconvdata/ansi_x3.110.c

index c5506b13b8f9b400762076eb6f59553440512ddb..94e6e6b745bc703579bc821059adb79ee3605b0a 100644 (file)
@@ -407,7 +407,7 @@ static const char from_ucs4[][2] =
           is also available.  */                                             \
        uint32_t ch2;                                                         \
                                                                              \
-       if (inptr + 1 >= inend)                                               \
+       if (inend - inptr <= 1)                                               \
          {                                                                   \
            /* The second character is not available.  */                     \
            result = __GCONV_INCOMPLETE_INPUT;                                \