[lxc-devel] [PATCH 16/21] Replace strdupa call by standard strdup
Stéphane Graber
stgraber at ubuntu.com
Thu Jan 3 22:37:56 UTC 2013
On 01/03/2013 05:00 PM, Serge Hallyn wrote:
> Quoting Stéphane Graber (stgraber at ubuntu.com):
>> strdupa appears to only exist in the standard glibc but at least not in bionic.
>> Replace the two strdupa calls we have by a standard strdup.
>>
>> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
>> ---
>> src/lxc/confile.c | 14 ++++++++++++--
>> 1 file changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/lxc/confile.c b/src/lxc/confile.c
>> index 940f0a9..2737822 100644
>> --- a/src/lxc/confile.c
>> +++ b/src/lxc/confile.c
>> @@ -580,7 +580,7 @@ static int config_network_ipv4(const char *key, const char *value,
>> lxc_list_init(list);
>> list->elem = inetdev;
>>
>> - addr = strdupa(value);
>> + addr = strdup(value);
>
> Please do check for !addr here. strstr(NULL, x) will segfault.
Ok. I assumed that strstr was somehow doing the right thing when the
value was NULL as that's what we've been doing over and over again in
that file :)
I'll take a look and fix those two and possibly a few more then.
>>
>> cursor = strstr(addr, " ");
>> if (cursor) {
>> @@ -601,11 +601,13 @@ static int config_network_ipv4(const char *key, const char *value,
>>
>> if (!inet_pton(AF_INET, addr, &inetdev->addr)) {
>> SYSERROR("invalid ipv4 address: %s", value);
>> + free(addr);
>> return -1;
>> }
>>
>> if (bcast && !inet_pton(AF_INET, bcast, &inetdev->bcast)) {
>> SYSERROR("invalid ipv4 broadcast address: %s", value);
>> + free(addr);
>> return -1;
>> }
>>
>> @@ -624,6 +626,7 @@ static int config_network_ipv4(const char *key, const char *value,
>>
>> lxc_list_add(&netdev->ipv4, list);
>>
>> + free(addr);
>> return 0;
>> }
>>
>> @@ -693,7 +696,7 @@ static int config_network_ipv6(const char *key, const char *value,
>> lxc_list_init(list);
>> list->elem = inet6dev;
>>
>> - valdup = strdupa(value);
>> + valdup = strdup(value);
>
> and here
>
>> inet6dev->prefix = 64;
>> slash = strstr(valdup, "/");
>> if (slash) {
>> @@ -702,13 +705,20 @@ static int config_network_ipv6(const char *key, const char *value,
>> inet6dev->prefix = atoi(netmask);
>> }
>>
>> + if (!valdup) {
>> + ERROR("no address specified");
>> + return -1;
>> + }
>
> (this is too late :)
>
>> +
>> if (!inet_pton(AF_INET6, value, &inet6dev->addr)) {
>> SYSERROR("invalid ipv6 address: %s", value);
>> + free(valdup);
>> return -1;
>> }
>>
>> lxc_list_add(&netdev->ipv6, list);
>>
>> + free(valdup);
>> return 0;
>> }
>>
>> --
>> 1.8.0
>>
>>
>> ------------------------------------------------------------------------------
>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
>> MVPs and experts. ON SALE this month only -- learn more at:
>> http://p.sf.net/sfu/learnmore_122712
>> _______________________________________________
>> Lxc-devel mailing list
>> Lxc-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/lxc-devel
--
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 899 bytes
Desc: OpenPGP digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20130103/bac64bef/attachment.pgp>
More information about the lxc-devel
mailing list