You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libIDL/libIDL-0.8.14-lexer-sscanf-...

37 lines
1.1 KiB

diff -Naur libIDL-0.8.14-original/lexer.l libIDL-0.8.14/lexer.l
--- libIDL-0.8.14-original/lexer.l 2009-04-18 08:20:37.000000000 -0400
+++ libIDL-0.8.14/lexer.l 2021-02-03 12:56:01.237822569 -0500
@@ -269,17 +269,29 @@
<*>{whitespace} ;
{b8_int} {
yylval.integer = 0;
- sscanf (yytext, "%" IDL_LL "o", &yylval.integer);
+ {
+ long long unsigned yyltmp = 0;
+ sscanf (yytext, "%" IDL_LL "o", &yyltmp);
+ memmove (&yylval.integer, &yyltmp, sizeof (yylval.integer));
+ }
tokreturn (TOK_INTEGER);
}
{b10_uint} {
yylval.integer = 0;
- sscanf (yytext, "%" IDL_LL "u", &yylval.integer);
+ {
+ long long unsigned yyltmp = 0;
+ sscanf (yytext, "%" IDL_LL "u", &yyltmp);
+ memmove (&yylval.integer, &yyltmp, sizeof (yylval.integer));
+ }
tokreturn (TOK_INTEGER);
}
{b16_int} {
yylval.integer = 0;
- sscanf (yytext + 2, "%" IDL_LL "x", &yylval.integer);
+ {
+ long long unsigned yyltmp = 0;
+ sscanf (yytext + 2, "%" IDL_LL "x", &yyltmp);
+ memmove (&yylval.integer, &yyltmp, sizeof (yylval.integer));
+ }
tokreturn (TOK_INTEGER);
}
{fixed_lit} {