mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
Fix an IPv6 breakage I introduced by adding an strlcpy truncation check. Found by Matthieu Patou <mat@samba.org>.
The truncate of the strlcpy() here was a *desired* side effect. strlcpy()/strlcat() should never be used like that. Be more explicit about the truncation and don't use strlcpy here. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Sat Mar 31 07:59:16 CEST 2012 on sn-devel-104
This commit is contained in:
parent
efd94d1598
commit
786cb132e8
@ -107,11 +107,18 @@ static bool interpret_string_addr_pref(struct sockaddr_storage *pss,
|
||||
*/
|
||||
|
||||
if (p && (p > str) && ((scope_id = if_nametoindex(p+1)) != 0)) {
|
||||
size_t len = MIN(PTR_DIFF(p,str)+1, sizeof(addr));
|
||||
if (strlcpy(addr, str, len) >= len) {
|
||||
/* Truncate. */
|
||||
/* Length of string we want to copy.
|
||||
This is IP:v6:addr (removing the %ifname).
|
||||
*/
|
||||
size_t len = PTR_DIFF(p,str);
|
||||
|
||||
if (len+1 > sizeof(addr)) {
|
||||
/* string+nul too long for array. */
|
||||
return false;
|
||||
}
|
||||
memcpy(addr, str, len);
|
||||
addr[len] = '\0';
|
||||
|
||||
str = addr;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user