vfscanf: fix use of uninitialized variable

Submitted by Julien Ramseier on July 1, 2020, 1:12 p.m.

Details

Message ID E8B0FA07-16BD-490D-B48A-AC062A8F4A52@gmail.com
State New
Series "vfscanf: fix use of uninitialized variable"
Headers show

Commit Message

Julien Ramseier July 1, 2020, 1:12 p.m.
vfscanf() may use the variable 'alloc' uninitialized when taking the branch
introduced by recent commit b287cd745c2243f8e5114331763a5a9813b5f6ee.

Spotted by clang:

../lib/libc/src/stdio/vfscanf.c:80:6: warning: variable 'alloc' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
        if (!f->rpos) goto input_fail;
            ^~~~~~~~
../lib/libc/src/stdio/vfscanf.c:330:7: note: uninitialized use occurs here
                if (alloc) {
                    ^~~~~

---
 src/stdio/vfscanf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/src/stdio/vfscanf.c b/src/stdio/vfscanf.c
index b5ebc16e..b78a374d 100644
--- a/src/stdio/vfscanf.c
+++ b/src/stdio/vfscanf.c
@@ -57,7 +57,7 @@  int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap)
 {
 	int width;
 	int size;
-	int alloc;
+	int alloc = 0;
 	int base;
 	const unsigned char *p;
 	int c, t;

Comments

Rich Felker July 6, 2020, 10 p.m.
On Wed, Jul 01, 2020 at 03:12:14PM +0200, Julien Ramseier wrote:
> vfscanf() may use the variable 'alloc' uninitialized when taking the branch
> introduced by recent commit b287cd745c2243f8e5114331763a5a9813b5f6ee.
> 
> Spotted by clang:
> 
> .../lib/libc/src/stdio/vfscanf.c:80:6: warning: variable 'alloc' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
>         if (!f->rpos) goto input_fail;
>             ^~~~~~~~
> .../lib/libc/src/stdio/vfscanf.c:330:7: note: uninitialized use occurs here
>                 if (alloc) {
>                     ^~~~~
> 
> ---
>  src/stdio/vfscanf.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/stdio/vfscanf.c b/src/stdio/vfscanf.c
> index b5ebc16e..b78a374d 100644
> --- a/src/stdio/vfscanf.c
> +++ b/src/stdio/vfscanf.c
> @@ -57,7 +57,7 @@ int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap)
>  {
>  	int width;
>  	int size;
> -	int alloc;
> +	int alloc = 0;
>  	int base;
>  	const unsigned char *p;
>  	int c, t;
> -- 
> 2.23.0

Thanks, applied.

Rich