[flashrom] [commit] r715 - trunk
svn at flashrom.org
svn at flashrom.org
Sat Sep 5 03:10:23 CEST 2009
Author: hailfinger
Date: 2009-09-05 03:10:23 +0200 (Sat, 05 Sep 2009)
New Revision: 715
Modified:
trunk/serprog.c
Log:
Fix strict aliasing in serprog.
Initialize the sockaddr,sockaddr_in union directly instead of running
memset later.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Stefan Reinauer <stepan at coresystems.de>
Modified: trunk/serprog.c
===================================================================
--- trunk/serprog.c 2009-09-04 13:57:07 UTC (rev 714)
+++ trunk/serprog.c 2009-09-05 01:10:23 UTC (rev 715)
@@ -105,7 +105,7 @@
{
int flag = 1;
struct hostent *hostPtr = NULL;
- struct sockaddr_in sp;
+ union { struct sockaddr_in si; struct sockaddr s; } sp = {};
int sock;
printf_debug(MSGHEADER "IP %s port %d\n", ip, port);
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
@@ -117,11 +117,10 @@
if (NULL == hostPtr)
sp_die("Error: cannot resolve");
}
- memset(&sp, 0, sizeof(sp));
- sp.sin_family = AF_INET;
- sp.sin_port = htons(port);
- (void)memcpy(&sp.sin_addr, hostPtr->h_addr, hostPtr->h_length);
- if (connect(sock, (struct sockaddr *)&sp, sizeof(sp)) < 0) {
+ sp.si.sin_family = AF_INET;
+ sp.si.sin_port = htons(port);
+ (void)memcpy(&sp.si.sin_addr, hostPtr->h_addr, hostPtr->h_length);
+ if (connect(sock, &sp.s, sizeof(sp.si)) < 0) {
close(sock);
sp_die("Error: serprog cannot connect");
}
More information about the flashrom
mailing list