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


Message #16 received at 73985-done <at> debbugs.gnu.org (full text, mbox):

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 252 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.