--- Begin Message ---
Subject: |
Emacs-28: Inadequate coding in hack-elisp-shorthands |
Date: |
Fri, 1 Oct 2021 17:10:57 +0000 |
Hello, Emacs.
In emacs -Q in the emacs-28 branch, create the following two line file,
foobar.el, and try to load it:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defvar foo-baz "foobar-baz")
FOOBARELISP-SHORTHANDS: (("foo" . "foobar")))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
This will throw an error, but that isn't important.
What is important is that the symbol foobar-baz is created by the
elisp-shorthands facility.
This shouldn't happen since:
1/- There is no Local Variables section.
2/- There is no variable elisp-shorthands in that non-existent section.
The following errors are evident in hack-elisp-shorthands:
1/- The code doesn't check for a correctly formatted Local Variables
section.
2/- The code, even if it did check, would only check the last 3000 bytes
in the file. The section can occur anywhere in the last 3000
CHARACTERS.
3/- The code doesn't do a case-sensitive search for "elisp-shorthands".
4/- The code doesn't check for "elisp-shorthands" being a complete
symbol.
5/- The code doesn't even check that "elisp-shorthands" is in a comment.
I would suggest that these errors be corrected. I would also suggest
that the entire code and documentation for this new facility be
carefully reviewed by somebody who isn't the original author.
--
Alan Mackenzie (Nuremberg, Germany).
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#50946: Emacs-28: Inadequate coding in hack-elisp-shorthands |
Date: |
Sat, 02 Oct 2021 01:48:31 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Eli Zaretskii <eliz@gnu.org> writes:
>> Date: Fri, 1 Oct 2021 17:10:57 +0000
>> From: Alan Mackenzie <acm@muc.de>
>>
>> In emacs -Q in the emacs-28 branch, create the following two line file,
>> foobar.el, and try to load it:
>>
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> (defvar foo-baz "foobar-baz")
>> FOOBARELISP-SHORTHANDS: (("foo" . "foobar")))
>> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>>
>> This will throw an error, but that isn't important.
>>
>> What is important is that the symbol foobar-baz is created by the
>> elisp-shorthands facility.
>>
>> This shouldn't happen since:
>> 1/- There is no Local Variables section.
>> 2/- There is no variable elisp-shorthands in that non-existent section.
>>
>> The following errors are evident in hack-elisp-shorthands:
>> 1/- The code doesn't check for a correctly formatted Local Variables
>> section.
>> 2/- The code, even if it did check, would only check the last 3000 bytes
>> in the file. The section can occur anywhere in the last 3000
>> CHARACTERS.
>> 3/- The code doesn't do a case-sensitive search for "elisp-shorthands".
>> 4/- The code doesn't check for "elisp-shorthands" being a complete
>> symbol.
>> 5/- The code doesn't even check that "elisp-shorthands" is in a comment.
>
> Thanks.
>
> João, could you please look into this?
Done. In the Emacs 28 branch. All tests pass (except a strange
'seccomp' one that never did). Let me know if some more bugs lurk.
Addressed all the points except the last one which doesn't make much
sense, since normal `hack-local-variables` also doesn't do any such
check. In fact what I'm doing is re-using
hack-local-variables--find-variables from files.el, as I had wanted to
anyway.
João
--- End Message ---