diff options
| author | Florian Weimer <fweimer@redhat.com> | 2021-07-19 07:55:27 +0200 |
|---|---|---|
| committer | Florian Weimer <fweimer@redhat.com> | 2021-07-19 07:56:21 +0200 |
| commit | 7ed1ac6da3d6ae5bfbbf4c4bdce07a40e8113df8 (patch) | |
| tree | ebca688a687d71113823efb9f1fc3c89fbd300bc | |
| parent | 276e9822b3402d49a3c9bea713f89dc855812152 (diff) | |
| download | glibc-7ed1ac6da3d6ae5bfbbf4c4bdce07a40e8113df8.tar.xz glibc-7ed1ac6da3d6ae5bfbbf4c4bdce07a40e8113df8.zip | |
resolv: Move ns_name_pack into its own file and into libc
And reformat to GNU style, and eliminate the labellen function.
The symbol was moved using scripts/move-symbol-to-libc.py.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
69 files changed, 274 insertions, 227 deletions
diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h index c27008b5ff..02d7b0b553 100644 --- a/include/arpa/nameser.h +++ b/include/arpa/nameser.h @@ -65,7 +65,6 @@ libresolv_hidden_proto (ns_put32) libresolv_hidden_proto (ns_initparse) libresolv_hidden_proto (ns_skiprr) libresolv_hidden_proto (ns_parserr) -libresolv_hidden_proto (ns_name_pack) libresolv_hidden_proto (ns_name_compress) libresolv_hidden_proto (ns_sprintrr) libresolv_hidden_proto (ns_sprintrrf) @@ -76,6 +75,8 @@ libresolv_hidden_proto (ns_format_ttl) extern __typeof (ns_name_ntop) __ns_name_ntop; libc_hidden_proto (__ns_name_ntop) +extern __typeof (ns_name_pack) __ns_name_pack; +libc_hidden_proto (__ns_name_pack) extern __typeof (ns_name_pton) __ns_name_pton; libc_hidden_proto (__ns_name_pton) extern __typeof (ns_name_skip) __ns_name_skip; diff --git a/resolv/Makefile b/resolv/Makefile index 7839e1fb3c..8bb2585dca 100644 --- a/resolv/Makefile +++ b/resolv/Makefile @@ -33,6 +33,7 @@ routines := \ inet_ntop \ inet_pton \ ns_name_ntop \ + ns_name_pack \ ns_name_pton \ ns_name_skip \ ns_name_uncompress \ diff --git a/resolv/Versions b/resolv/Versions index 770a2b8d6b..8ea42da48d 100644 --- a/resolv/Versions +++ b/resolv/Versions @@ -26,6 +26,7 @@ libc { } GLIBC_2.9 { ns_name_ntop; + ns_name_pack; ns_name_pton; ns_name_skip; ns_name_uncompress; @@ -39,6 +40,7 @@ libc { getaddrinfo_a; %endif ns_name_ntop; + ns_name_pack; ns_name_pton; ns_name_skip; ns_name_uncompress; @@ -52,6 +54,7 @@ libc { __inet_aton_exact; __inet_pton_length; __ns_name_ntop; + __ns_name_pack; __ns_name_pton; __ns_name_skip; __ns_name_uncompress; @@ -154,7 +157,6 @@ libresolv { ns_msg_getflag; ns_name_compress; ns_name_ntol; - ns_name_pack; ns_name_pton; ns_name_rollback; ns_name_skip; diff --git a/resolv/ns_name.c b/resolv/ns_name.c index 9f7ca4a506..f1a84ad8a6 100644 --- a/resolv/ns_name.c +++ b/resolv/ns_name.c @@ -31,9 +31,6 @@ /* Forward. */ -static int dn_find(const u_char *, const u_char *, - const u_char * const *, - const u_char * const *); static int labellen(const u_char *); /* Public. */ @@ -93,118 +90,6 @@ ns_name_ntol(const u_char *src, u_char *dst, size_t dstsiz) } /*% - * Pack domain name 'domain' into 'comp_dn'. - * - * return: - *\li Size of the compressed name, or -1. - * - * notes: - *\li 'dnptrs' is an array of pointers to previous compressed names. - *\li dnptrs[0] is a pointer to the beginning of the message. The array - * ends with NULL. - *\li 'lastdnptr' is a pointer to the end of the array pointed to - * by 'dnptrs'. - * - * Side effects: - *\li The list of pointers in dnptrs is updated for labels inserted into - * the message as we compress the name. If 'dnptr' is NULL, we don't - * try to compress names. If 'lastdnptr' is NULL, we don't update the - * list. - */ -int -ns_name_pack(const u_char *src, u_char *dst, int dstsiz, - const u_char **dnptrs, const u_char **lastdnptr) -{ - u_char *dstp; - const u_char **cpp, **lpp, *eob, *msg; - const u_char *srcp; - int n, l, first = 1; - - srcp = src; - dstp = dst; - eob = dstp + dstsiz; - lpp = cpp = NULL; - if (dnptrs != NULL) { - if ((msg = *dnptrs++) != NULL) { - for (cpp = dnptrs; *cpp != NULL; cpp++) - (void)NULL; - lpp = cpp; /*%< end of list to search */ - } - } else - msg = NULL; - - /* make sure the domain we are about to add is legal */ - l = 0; - do { - int l0; - - n = *srcp; - if ((n & NS_CMPRSFLGS) == NS_CMPRSFLGS) { - __set_errno (EMSGSIZE); - return (-1); - } - if ((l0 = labellen(srcp)) < 0) { - __set_errno (EINVAL); - return(-1); - } - l += l0 + 1; - if (l > MAXCDNAME) { - __set_errno (EMSGSIZE); - return (-1); - } - srcp += l0 + 1; - } while (n != 0); - - /* from here on we need to reset compression pointer array on error */ - srcp = src; - do { - /* Look to see if we can use pointers. */ - n = *srcp; - if (n != 0 && msg != NULL) { - l = dn_find(srcp, msg, (const u_char * const *)dnptrs, - (const u_char * const *)lpp); - if (l >= 0) { - if (dstp + 1 >= eob) { - goto clea |
