GNU bug report logs - #73985
fix: charset.max_char may be used before being set

Previous Next

Package: emacs;

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

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#73985: closed (fix: charset.max_char may be used before being
 set)
Date: Sat, 09 Nov 2024 09:13:02 +0000
[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)]
From: altermo31 <altermo31 <at> proton.me>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: fix: charset.max_char may be used before being set
Date: Thu, 24 Oct 2024 11:46:17 +0000
[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)]
From: Eli Zaretskii <eliz <at> gnu.org>
To: altermo31 <at> proton.me
Cc: 73985-done <at> debbugs.gnu.org
Subject: Re: bug#73985: fix: charset.max_char may be used before being set
Date: Sat, 09 Nov 2024 11:12:22 +0200
> 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.