[.....]
> @@ -832,15 +833,21 @@
>               if (!sep->se_rpc) {
>                       sp = getservbyname(sep->se_service, sep->se_proto);
>                       if (sp == 0) {
> +                             if ((p = strtol(sep->se_service, 
> +                                 (char **NULL), 10))) {
> +                                     sep->se_ctrladdr.sin_port = htons(p);
> +                                     goto numeric_override;
> +                             }
>                               syslog(LOG_ERR, "%s/%s: unknown service",
>                               sep->se_service, sep->se_proto);
>                               sep->se_checked = 0;
>                               continue;
>                       }
>                       if (sp->s_port != sep->se_ctrladdr.sin_port) {
> +                             sep->se_ctrladdr.sin_port = sp->s_port;
> +numeric_override:
>                               sep->se_ctrladdr.sin_family = AF_INET;
>                               sep->se_ctrladdr.sin_addr = bind_address;
> -                             sep->se_ctrladdr.sin_port = sp->s_port;
>                               if (sep->se_fd >= 0)
>                                       close_sep(sep);
>                       }
[.....]

Yes, but do it the other way 'round - strtol first, if it's not all 
numeric, getservbyname().
-- 
Brian <[EMAIL PROTECTED]>                        <[EMAIL PROTECTED]>
      <http://www.Awfulhak.org>                   <[EMAIL PROTECTED]>
Don't _EVER_ lose your sense of humour !          <[EMAIL PROTECTED]>




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to