Skip to content

Add missing checks for ipcrypt_str_to_ip16#4

Merged
jedisct1 merged 1 commit intoipcrypt-std:mainfrom
rgacogne:add-missing-ipcrypt_str_to_ip16-checks
Feb 3, 2026
Merged

Add missing checks for ipcrypt_str_to_ip16#4
jedisct1 merged 1 commit intoipcrypt-std:mainfrom
rgacogne:add-missing-ipcrypt_str_to_ip16-checks

Conversation

@rgacogne
Copy link
Copy Markdown
Contributor

@rgacogne rgacogne commented Feb 3, 2026

I noticed that gcc was complaining about possibly using uninitialized memory:

In file included from /usr/include/string.h:548,
                 from ipcrypt2.c:37:
In function 'memcpy',
    inlined from 'ipcrypt_nd_encrypt_ip16' at ipcrypt2.c:1349:5,
    inlined from 'ipcrypt_nd_encrypt_ip_str' at ipcrypt2.c:1388:5:
/usr/include/bits/string_fortified.h:29:10: warning: 'ip16' may be used uninitialized [-Wmaybe-uninitialized]
   29 |   return __builtin___memcpy_chk (__dest, __src, __len,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   30 |                                  __glibc_objsize0 (__dest));
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
ipcrypt2.c: In function 'ipcrypt_nd_encrypt_ip_str':
ipcrypt2.c:1381:13: note: 'ip16' declared here
 1381 |     uint8_t ip16[16];
      |             ^~~~

which seems indeed possible if the IPv6 address could not be parsed.

I noticed that gcc was complaining about possibly using
uninitialized memory:
```
In file included from /usr/include/string.h:548,
                 from ipcrypt2.c:37:
In function 'memcpy',
    inlined from 'ipcrypt_nd_encrypt_ip16' at ipcrypt2.c:1349:5,
    inlined from 'ipcrypt_nd_encrypt_ip_str' at ipcrypt2.c:1388:5:
/usr/include/bits/string_fortified.h:29:10: warning: 'ip16' may be used uninitialized [-Wmaybe-uninitialized]
   29 |   return __builtin___memcpy_chk (__dest, __src, __len,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   30 |                                  __glibc_objsize0 (__dest));
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
ipcrypt2.c: In function 'ipcrypt_nd_encrypt_ip_str':
ipcrypt2.c:1381:13: note: 'ip16' declared here
 1381 |     uint8_t ip16[16];
      |             ^~~~
```

which seems indeed possible if the IPv6 address could not be
parsed.

Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
@jedisct1
Copy link
Copy Markdown
Collaborator

jedisct1 commented Feb 3, 2026

Indeed, thank you!

@jedisct1 jedisct1 merged commit f3fbcfb into ipcrypt-std:main Feb 3, 2026
@rgacogne rgacogne deleted the add-missing-ipcrypt_str_to_ip16-checks branch February 3, 2026 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants