Deleted Added
full compact
res_comp.c (165903) res_comp.c (170244)
1/*
2 * Copyright (c) 1985, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 52 unchanged lines hidden (view full) ---

61 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
62 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
63 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
64 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
65 */
66
67#if defined(LIBC_SCCS) && !defined(lint)
68static const char sccsid[] = "@(#)res_comp.c 8.1 (Berkeley) 6/4/93";
1/*
2 * Copyright (c) 1985, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 52 unchanged lines hidden (view full) ---

61 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
62 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
63 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
64 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
65 */
66
67#if defined(LIBC_SCCS) && !defined(lint)
68static const char sccsid[] = "@(#)res_comp.c 8.1 (Berkeley) 6/4/93";
69static const char rcsid[] = "$Id: res_comp.c,v 1.1.2.1.4.2 2005/07/28 07:43:22 marka Exp $";
69static const char rcsid[] = "$Id: res_comp.c,v 1.3.18.2 2005/07/28 07:38:11 marka Exp $";
70#endif /* LIBC_SCCS and not lint */
71#include <sys/cdefs.h>
70#endif /* LIBC_SCCS and not lint */
71#include <sys/cdefs.h>
72__FBSDID("$FreeBSD: head/lib/libc/resolv/res_comp.c 165903 2007-01-09 00:28:16Z imp $");
72__FBSDID("$FreeBSD: head/lib/libc/resolv/res_comp.c 170244 2007-06-03 17:20:27Z ume $");
73
74#include "port_before.h"
75#include <sys/types.h>
76#include <sys/param.h>
77#include <netinet/in.h>
78#include <arpa/nameser.h>
79#include <ctype.h>
80#include <resolv.h>
81#include <stdio.h>
82#include <string.h>
83#include <unistd.h>
84#include "port_after.h"
85
73
74#include "port_before.h"
75#include <sys/types.h>
76#include <sys/param.h>
77#include <netinet/in.h>
78#include <arpa/nameser.h>
79#include <ctype.h>
80#include <resolv.h>
81#include <stdio.h>
82#include <string.h>
83#include <unistd.h>
84#include "port_after.h"
85
86/*
86/*%
87 * Expand compressed domain name 'src' to full domain name.
87 * Expand compressed domain name 'src' to full domain name.
88 * 'msg' is a pointer to the begining of the message,
89 * 'eom' points to the first location after the message,
90 * 'dst' is a pointer to a buffer of size 'dstsiz' for the result.
91 * Return size of compressed name or -1 if there was an error.
88 *
89 * \li 'msg' is a pointer to the begining of the message,
90 * \li 'eom' points to the first location after the message,
91 * \li 'dst' is a pointer to a buffer of size 'dstsiz' for the result.
92 * \li Return size of compressed name or -1 if there was an error.
92 */
93int
94dn_expand(const u_char *msg, const u_char *eom, const u_char *src,
95 char *dst, int dstsiz)
96{
97 int n = ns_name_uncompress(msg, eom, src, dst, (size_t)dstsiz);
98
99 if (n > 0 && dst[0] == '.')
100 dst[0] = '\0';
101 return (n);
102}
103
93 */
94int
95dn_expand(const u_char *msg, const u_char *eom, const u_char *src,
96 char *dst, int dstsiz)
97{
98 int n = ns_name_uncompress(msg, eom, src, dst, (size_t)dstsiz);
99
100 if (n > 0 && dst[0] == '.')
101 dst[0] = '\0';
102 return (n);
103}
104
104/*
105/*%
105 * Pack domain name 'exp_dn' in presentation form into 'comp_dn'.
106 * Pack domain name 'exp_dn' in presentation form into 'comp_dn'.
106 * Return the size of the compressed name or -1.
107 * 'length' is the size of the array pointed to by 'comp_dn'.
107 *
108 * \li Return the size of the compressed name or -1.
109 * \li 'length' is the size of the array pointed to by 'comp_dn'.
108 */
109int
110dn_comp(const char *src, u_char *dst, int dstsiz,
111 u_char **dnptrs, u_char **lastdnptr)
112{
113 return (ns_name_compress(src, dst, (size_t)dstsiz,
114 (const u_char **)dnptrs,
115 (const u_char **)lastdnptr));
116}
117
110 */
111int
112dn_comp(const char *src, u_char *dst, int dstsiz,
113 u_char **dnptrs, u_char **lastdnptr)
114{
115 return (ns_name_compress(src, dst, (size_t)dstsiz,
116 (const u_char **)dnptrs,
117 (const u_char **)lastdnptr));
118}
119
118/*
120/*%
119 * Skip over a compressed domain name. Return the size or -1.
120 */
121int
122dn_skipname(const u_char *ptr, const u_char *eom) {
123 const u_char *saveptr = ptr;
124
125 if (ns_name_skip(&ptr, eom) == -1)
126 return (-1);
127 return (ptr - saveptr);
128}
129
121 * Skip over a compressed domain name. Return the size or -1.
122 */
123int
124dn_skipname(const u_char *ptr, const u_char *eom) {
125 const u_char *saveptr = ptr;
126
127 if (ns_name_skip(&ptr, eom) == -1)
128 return (-1);
129 return (ptr - saveptr);
130}
131
130/*
132/*%
131 * Verify that a domain name uses an acceptable character set.
133 * Verify that a domain name uses an acceptable character set.
132 */
133
134/*
134 *
135 * Note the conspicuous absence of ctype macros in these definitions. On
136 * non-ASCII hosts, we can't depend on string literals or ctype macros to
137 * tell us anything about network-format data. The rest of the BIND system
138 * is not careful about this, but for some reason, we're doing it right here.
139 */
140#define PERIOD 0x2e
141#define hyphenchar(c) ((c) == 0x2d)
142#define bslashchar(c) ((c) == 0x5c)

--- 26 unchanged lines hidden (view full) ---

169 if (!middlechar(ch))
170 return (0);
171 }
172 pch = ch, ch = nch;
173 }
174 return (1);
175}
176
135 * Note the conspicuous absence of ctype macros in these definitions. On
136 * non-ASCII hosts, we can't depend on string literals or ctype macros to
137 * tell us anything about network-format data. The rest of the BIND system
138 * is not careful about this, but for some reason, we're doing it right here.
139 */
140#define PERIOD 0x2e
141#define hyphenchar(c) ((c) == 0x2d)
142#define bslashchar(c) ((c) == 0x5c)

--- 26 unchanged lines hidden (view full) ---

169 if (!middlechar(ch))
170 return (0);
171 }
172 pch = ch, ch = nch;
173 }
174 return (1);
175}
176
177/*
177/*%
178 * hostname-like (A, MX, WKS) owners can have "*" as their first label
179 * but must otherwise be as a host name.
180 */
181int
182res_ownok(const char *dn) {
183 if (asterchar(dn[0])) {
184 if (periodchar(dn[1]))
185 return (res_hnok(dn+2));
186 if (dn[1] == '\0')
187 return (1);
188 }
189 return (res_hnok(dn));
190}
191
178 * hostname-like (A, MX, WKS) owners can have "*" as their first label
179 * but must otherwise be as a host name.
180 */
181int
182res_ownok(const char *dn) {
183 if (asterchar(dn[0])) {
184 if (periodchar(dn[1]))
185 return (res_hnok(dn+2));
186 if (dn[1] == '\0')
187 return (1);
188 }
189 return (res_hnok(dn));
190}
191
192/*
192/*%
193 * SOA RNAMEs and RP RNAMEs can have any printable character in their first
194 * label, but the rest of the name has to look like a host name.
195 */
196int
197res_mailok(const char *dn) {
198 int ch, escaped = 0;
199
200 /* "." is a valid missing representation */

--- 11 unchanged lines hidden (view full) ---

212 else if (bslashchar(ch))
213 escaped = 1;
214 }
215 if (periodchar(ch))
216 return (res_hnok(dn));
217 return (0);
218}
219
193 * SOA RNAMEs and RP RNAMEs can have any printable character in their first
194 * label, but the rest of the name has to look like a host name.
195 */
196int
197res_mailok(const char *dn) {
198 int ch, escaped = 0;
199
200 /* "." is a valid missing representation */

--- 11 unchanged lines hidden (view full) ---

212 else if (bslashchar(ch))
213 escaped = 1;
214 }
215 if (periodchar(ch))
216 return (res_hnok(dn));
217 return (0);
218}
219
220/*
221 * This function is quite liberal, since RFC 1034's character sets are only
220/*%
221 * This function is quite liberal, since RFC1034's character sets are only
222 * recommendations.
223 */
224int
225res_dnok(const char *dn) {
226 int ch;
227
228 while ((ch = *dn++) != '\0')
229 if (!domainchar(ch))
230 return (0);
231 return (1);
232}
233
234#ifdef BIND_4_COMPAT
222 * recommendations.
223 */
224int
225res_dnok(const char *dn) {
226 int ch;
227
228 while ((ch = *dn++) != '\0')
229 if (!domainchar(ch))
230 return (0);
231 return (1);
232}
233
234#ifdef BIND_4_COMPAT
235/*
235/*%
236 * This module must export the following externally-visible symbols:
237 * ___putlong
238 * ___putshort
239 * __getlong
240 * __getshort
241 * Note that one _ comes from C and the others come from us.
242 */
243

--- 19 unchanged lines hidden (view full) ---

263/*
264 * Weak aliases for applications that use certain private entry points,
265 * and fail to include <resolv.h>.
266 */
267#undef dn_comp
268__weak_reference(__dn_comp, dn_comp);
269#undef dn_expand
270__weak_reference(__dn_expand, dn_expand);
236 * This module must export the following externally-visible symbols:
237 * ___putlong
238 * ___putshort
239 * __getlong
240 * __getshort
241 * Note that one _ comes from C and the others come from us.
242 */
243

--- 19 unchanged lines hidden (view full) ---

263/*
264 * Weak aliases for applications that use certain private entry points,
265 * and fail to include <resolv.h>.
266 */
267#undef dn_comp
268__weak_reference(__dn_comp, dn_comp);
269#undef dn_expand
270__weak_reference(__dn_expand, dn_expand);
271
272/*! \file */