- struct sockaddr_in *sin;
-
- sin = (struct sockaddr_in *) malloc(sizeof *sin);
- if (sin == NULL)
- {
- fprintf (stderr, _("%s: Out of memory.\n"), exec_name);
- return 0;
- }
-
- if (!store_hostaddress ((unsigned char *)&sin->sin_addr, val))
- {
- fprintf (stderr, _("%s: %s: Cannot convert `%s' to an IP address.\n"),
- exec_name, com, val);
- return 0;
- }
-
- sin->sin_family = AF_INET;
- sin->sin_port = 0;
-
- * (struct sockaddr_in **) closure = sin;
-
- return 1;
+ struct sockaddr_in sin;
+
+ if (!store_hostaddress ((unsigned char *)&sin.sin_addr, val))
+ {
+ fprintf (stderr, _("%s: %s: Cannot convert `%s' to an IP address.\n"),
+ exec_name, com, val);
+ return 0;
+ }
+
+ sin.sin_family = AF_INET;
+ sin.sin_port = 0;
+
+ memcpy (closure, &sin, sizeof (sin));
+
+ return 1;