Module Name: src Committed By: tteras Date: Thu Feb 10 11:17:17 UTC 2011
Modified Files: src/crypto/dist/ipsec-tools/src/racoon: prsa_par.y Log Message: >From M E Andersson <deb...@gisladisker.se>: Fix parsing of restricted RSA key addresses. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/crypto/dist/ipsec-tools/src/racoon/prsa_par.y Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/crypto/dist/ipsec-tools/src/racoon/prsa_par.y diff -u src/crypto/dist/ipsec-tools/src/racoon/prsa_par.y:1.4 src/crypto/dist/ipsec-tools/src/racoon/prsa_par.y:1.5 --- src/crypto/dist/ipsec-tools/src/racoon/prsa_par.y:1.4 Sat Sep 9 16:22:10 2006 +++ src/crypto/dist/ipsec-tools/src/racoon/prsa_par.y Thu Feb 10 11:17:17 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: prsa_par.y,v 1.4 2006/09/09 16:22:10 manu Exp $ */ +/* $NetBSD: prsa_par.y,v 1.5 2011/02/10 11:17:17 tteras Exp $ */ /* Id: prsa_par.y,v 1.3 2004/11/08 12:04:23 ludvigm Exp */ @@ -236,6 +236,7 @@ { int err; struct sockaddr_in *sap; + struct addrinfo hints, *res; if ($2 == -1) $2 = 32; if ($2 < 0 || $2 > 32) { @@ -245,12 +246,16 @@ $$ = calloc (sizeof(struct netaddr), 1); $$->prefix = $2; sap = (struct sockaddr_in *)(&$$->sa); - sap->sin_family = AF_INET; - err = inet_pton(AF_INET, $1, (struct in_addr*)(&sap->sin_addr)); - if (err <= 0) { - prsaerror("inet_pton(%s): %s\n", $1, strerror(errno)); + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; + hints.ai_flags = AI_NUMERICHOST; + err = getaddrinfo($1, NULL, &hints, &res); + if (err < 0) { + prsaerror("getaddrinfo(%s): %s\n", $1, gai_strerror(err)); YYABORT; } + memcpy(sap, res->ai_addr, res->ai_addrlen); + freeaddrinfo(res); } ; @@ -259,6 +264,7 @@ { int err; struct sockaddr_in6 *sap; + struct addrinfo hints, *res; if ($2 == -1) $2 = 128; if ($2 < 0 || $2 > 128) { @@ -268,12 +274,16 @@ $$ = calloc (sizeof(struct netaddr), 1); $$->prefix = $2; sap = (struct sockaddr_in6 *)(&$$->sa); - sap->sin6_family = AF_INET6; - err = inet_pton(AF_INET6, $1, (struct in6_addr*)(&sap->sin6_addr)); - if (err <= 0) { - prsaerror("inet_pton(%s): %s\n", $1, strerror(errno)); + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET6; + hints.ai_flags = AI_NUMERICHOST; + err = getaddrinfo($1, NULL, &hints, &res); + if (err < 0) { + prsaerror("getaddrinfo(%s): %s\n", $1, gai_strerror(err)); YYABORT; } + memcpy(sap, res->ai_addr, res->ai_addrlen); + freeaddrinfo(res); } ;