GNU bug report logs -
#73985
fix: charset.max_char may be used before being set
Previous Next
Reported by: altermo31 <altermo31 <at> proton.me>
Date: Thu, 24 Oct 2024 13:03:02 UTC
Severity: normal
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Sat, 09 Nov 2024 11:12:22 +0200
with message-id <861pzkojnt.fsf <at> gnu.org>
and subject line Re: bug#73985: fix: charset.max_char may be used before being set
has caused the debbugs.gnu.org bug report #73985,
regarding fix: charset.max_char may be used before being set
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
73985: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73985
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
Problem:
If the value to be set to charset.max_char is invalid, an error occurs, but the error uses the yet unset charset.max_char.
Solution:
Use the value that charset.max_char would be set to if the value wasn't invalid.
[0001-fix-charset.max_char-may-be-used-before-being-set.patch (text/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
> Cc: 73985 <at> debbugs.gnu.org
> Date: Thu, 24 Oct 2024 17:42:36 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
>
> > Thanks. You are right that the original code is incorrect, but the
> > code you propose has a subtle problem: the sum
> >
> > i + charset.code_offset
> >
> > could overflow. So we need to find a safer way of explaining the
> > problem.
>
> I fixed that (on the master branch) like this:
>
> diff --git a/src/charset.c b/src/charset.c
> index e8d0826..f7d80cc 100644
> --- a/src/charset.c
> +++ b/src/charset.c
> @@ -1007,7 +1007,8 @@ DEFUN ("define-charset-internal", Fdefine_charset_internal,
>
> i = CODE_POINT_TO_INDEX (&charset, charset.max_code);
> if (MAX_CHAR - charset.code_offset < i)
> - error ("Unsupported max char: %d", charset.max_char);
> + error ("Unsupported max char: %d + %ud > MAX_CHAR (%d)",
> + i, charset.max_code, MAX_CHAR);
> charset.max_char = i + charset.code_offset;
> i = CODE_POINT_TO_INDEX (&charset, charset.min_code);
> charset.min_char = i + charset.code_offset;
No further comments, so I'm now closing this bug.
This bug report was last modified 250 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.