- {
- unsigned short int port
- = ntohs (((const struct sockaddr_in *) sa)->sin_port);
- char buf[INT_BUFSIZE_BOUND (port)];
- char const *s = uinttostr (port, buf);
- if (strlen (s) + 1 > servicelen)
- return EAI_OVERFLOW;
- memcpy (service, s, strlen (s) + 1);
- }
- break;
+ {
+ unsigned short int port
+ = ntohs (((const struct sockaddr_in *) sa)->sin_port);
+ if (servicelen <= snprintf (service, servicelen, "%u", port))
+ return EAI_OVERFLOW;
+ }
+ break;