* Re: master b5f17fe07c6: * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow [not found] ` <20230603105824.B5ECBC21A9D@vcs2.savannah.gnu.org> @ 2023-06-03 11:18 ` Robert Pluim 2023-06-03 12:18 ` Andreas Schwab 0 siblings, 1 reply; 3+ messages in thread From: Robert Pluim @ 2023-06-03 11:18 UTC (permalink / raw) To: emacs-devel; +Cc: Mattias Engdegård >>>>> On Sat, 3 Jun 2023 06:58:23 -0400 (EDT), Mattias EngdegÃ¥rd <mattiase@acm.org> said: Mattias> branch: master Mattias> commit b5f17fe07c6624380ba8d0c7a400a6b89f225209 Mattias> Author: Mattias Engdegård <mattiase@acm.org> Mattias> Commit: Mattias Engdegård <mattiase@acm.org> Mattias> * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow Mattias> Some AWK implementations have a fixed buffer for sprintf; for mawk the Mattias> default size is 8192 bytes. Hoist a string concatenation from Mattias> a sprintf call to avoid running into that limit. See discussion at Mattias> https://lists.gnu.org/archive/html/emacs-devel/2023-06/msg00090.html . Mattias> --- Mattias> admin/unidata/emoji-zwj.awk | 2 +- Mattias> 1 file changed, 1 insertion(+), 1 deletion(-) Mattias> diff --git a/admin/unidata/emoji-zwj.awk b/admin/unidata/emoji-zwj.awk Mattias> index f13f796bcac..4b648aa675e 100644 Mattias> --- a/admin/unidata/emoji-zwj.awk Mattias> +++ b/admin/unidata/emoji-zwj.awk Mattias> @@ -106,7 +106,7 @@ END { Mattias> for (elt in ch) Mattias> { Mattias> - entries = sprintf("%s\n\"\\N{U+%s}\\N{U+FE0E}\"\n\"\\N{U+%s}\\N{U+FE0F}\"", vec[elt], elt, elt) Mattias> + entries = vec[elt] sprintf("\n\"\\N{U+%s}\\N{U+FE0E}\"\n\"\\N{U+%s}\\N{U+FE0F}\"", elt, elt) Mattias> printf("(#x%s .\n,(eval-when-compile (regexp-opt\n'(\n%s\n))))\n", elt, entries) Mattias> } Mattias> print "))" Fair enough. I always forget that awk can do string concatenation (and this should go to emacs-29 as well). Robert -- ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: master b5f17fe07c6: * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow 2023-06-03 11:18 ` master b5f17fe07c6: * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow Robert Pluim @ 2023-06-03 12:18 ` Andreas Schwab 2023-06-03 14:41 ` Mattias Engdegård 0 siblings, 1 reply; 3+ messages in thread From: Andreas Schwab @ 2023-06-03 12:18 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel, Mattias Engdegård On Jun 03 2023, Robert Pluim wrote: >>>>>> On Sat, 3 Jun 2023 06:58:23 -0400 (EDT), Mattias EngdegÃ¥rd <mattiase@acm.org> said: > > Mattias> branch: master > Mattias> commit b5f17fe07c6624380ba8d0c7a400a6b89f225209 > Mattias> Author: Mattias Engdegård <mattiase@acm.org> > Mattias> Commit: Mattias Engdegård <mattiase@acm.org> > > Mattias> * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow > > Mattias> Some AWK implementations have a fixed buffer for sprintf; for mawk the > Mattias> default size is 8192 bytes. Hoist a string concatenation from > Mattias> a sprintf call to avoid running into that limit. See discussion at > Mattias> https://lists.gnu.org/archive/html/emacs-devel/2023-06/msg00090.html . > Mattias> --- > Mattias> admin/unidata/emoji-zwj.awk | 2 +- > Mattias> 1 file changed, 1 insertion(+), 1 deletion(-) > > Mattias> diff --git a/admin/unidata/emoji-zwj.awk b/admin/unidata/emoji-zwj.awk > Mattias> index f13f796bcac..4b648aa675e 100644 > Mattias> --- a/admin/unidata/emoji-zwj.awk > Mattias> +++ b/admin/unidata/emoji-zwj.awk > Mattias> @@ -106,7 +106,7 @@ END { > > Mattias> for (elt in ch) > Mattias> { > Mattias> - entries = sprintf("%s\n\"\\N{U+%s}\\N{U+FE0E}\"\n\"\\N{U+%s}\\N{U+FE0F}\"", vec[elt], elt, elt) > Mattias> + entries = vec[elt] sprintf("\n\"\\N{U+%s}\\N{U+FE0E}\"\n\"\\N{U+%s}\\N{U+FE0F}\"", elt, elt) > Mattias> printf("(#x%s .\n,(eval-when-compile (regexp-opt\n'(\n%s\n))))\n", elt, entries) > Mattias> } > Mattias> print "))" > > Fair enough. I always forget that awk can do string concatenation (and > this should go to emacs-29 as well). In fact, there is no need for sprintf in the first place. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: master b5f17fe07c6: * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow 2023-06-03 12:18 ` Andreas Schwab @ 2023-06-03 14:41 ` Mattias Engdegård 0 siblings, 0 replies; 3+ messages in thread From: Mattias Engdegård @ 2023-06-03 14:41 UTC (permalink / raw) To: Andreas Schwab; +Cc: Robert Pluim, emacs-devel 3 juni 2023 kl. 14.18 skrev Andreas Schwab <schwab@linux-m68k.org>: > In fact, there is no need for sprintf in the first place. That's right, but I didn't want to change more than necessary, to reduce the risk. Awk isn't directly known for its strong static checking. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-06-03 14:41 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <168578990322.1417.10991974872591826827@vcs2.savannah.gnu.org> [not found] ` <20230603105824.B5ECBC21A9D@vcs2.savannah.gnu.org> 2023-06-03 11:18 ` master b5f17fe07c6: * admin/unidata/emoji-zwj.awk: Avoid sprint buffer overflow Robert Pluim 2023-06-03 12:18 ` Andreas Schwab 2023-06-03 14:41 ` Mattias Engdegård
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).