Beautiful! Ingo Schwarze <[email protected]> wrote:
> Hi Theo, > > Theo de Raadt wrote on Fri, Apr 24, 2020 at 10:57:23AM -0600: > > > Somewhere along the line, the web pages were changed to no longer > > reference those pages, and that is a shame. > > > > It is a shame that the old errata pages don't point at those files. > > > > They aren't quite in the same format, but why not try to show > > the history of our work? > > > > If we start saying we don't need to document 20 years ago, what's > > the difference with saying we don't need to document 2 years ago? > > History is nice to have, and absence of historical context is dissapointing. > > I agree with what you are saying. > > So here is a patch to reference those files from our web pages. > > * Even though the patch creates errata20.html, i don't include > adding links from all errata pages to errata20.html into this > patch, to avoid making the patch unreadable from churn. > If people agree with me that such links should be on each > page, i can do that afterwards with a separate commit. > > * While most errata entries describe the problem with a few lines > of text, my aim for this patch was to kept the changes minimal, > to make it easy to review the patch. So i'm just saying in > one word, or in a few words, which subsystem the problem was > related to. If people think more text should be added to the > errata pages in addition to the links, that can be done in > later patches. > > * sni_20_tgetent.txt is strange in so far as it appeared quite > late, way after OpenBSD 2.1, but it says that "Versions of OpenBSD > newer than 2.0 are NOT vulnerable to this problem." For now, i > kept in in the chronological order anyway. > > * The files res_random.txt and sni_12_resolverid.txt contain > essentially the same text, except that each of them contains a > very small amount of errors or omissions apparent by looking at > the diff between the two. I suggest keeping sni_12_resolverid.txt > because that's the name better fitting the names of other files, > fixing some incorrect line breaks in that file, and deleting > the redundant copy res_random.txt. > > * The file ssh_trojan.txt is very special. It is not about any bug > in the OpenBSD source code at all, so no patching was ever needed > for it. Consequently, i don't think it belongs on the errata* > pages, and linking it should be done separately if desired, in > a different way, probably from somewhere below the OpenSSH site. > > OK? > Ingo > > > Index: errata20.html > =================================================================== > RCS file: errata20.html > diff -N errata20.html > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ errata20.html 24 Apr 2020 20:25:21 -0000 > @@ -0,0 +1,119 @@ > +<!doctype html> > +<html lang=en id=errata> > +<meta charset=utf-8> > + > +<title>OpenBSD 2.0 Errata</title> > +<meta name="description" content="the OpenBSD CD errata page"> > +<meta name="viewport" content="width=device-width, initial-scale=1"> > +<link rel="stylesheet" type="text/css" href="openbsd.css"> > +<link rel="canonical" href="https://www.openbsd.org/errata20.html"> > + > +<h2 id=OpenBSD> > +<a href="index.html"> > +<i>Open</i><b>BSD</b></a> > +2.0 Errata > +</h2> > +<hr> > + > +For errata on a certain release, click below:<br> > +<a href="errata21.html">2.1</a>, > +<a href="errata22.html">2.2</a>, > +<a href="errata23.html">2.3</a>, > +<a href="errata24.html">2.4</a>, > +<a href="errata25.html">2.5</a>, > +<a href="errata26.html">2.6</a>, > +<a href="errata27.html">2.7</a>, > +<a href="errata28.html">2.8</a>, > +<a href="errata29.html">2.9</a>, > +<a href="errata30.html">3.0</a>, > +<a href="errata31.html">3.1</a>, > +<a href="errata32.html">3.2</a>, > +<a href="errata33.html">3.3</a>, > +<a href="errata34.html">3.4</a>, > +<a href="errata35.html">3.5</a>, > +<a href="errata36.html">3.6</a>, > +<br> > +<a href="errata37.html">3.7</a>, > +<a href="errata38.html">3.8</a>, > +<a href="errata39.html">3.9</a>, > +<a href="errata40.html">4.0</a>, > +<a href="errata41.html">4.1</a>, > +<a href="errata42.html">4.2</a>, > +<a href="errata43.html">4.3</a>, > +<a href="errata44.html">4.4</a>, > +<a href="errata45.html">4.5</a>, > +<a href="errata46.html">4.6</a>, > +<a href="errata47.html">4.7</a>, > +<a href="errata48.html">4.8</a>, > +<a href="errata49.html">4.9</a>, > +<a href="errata50.html">5.0</a>, > +<a href="errata51.html">5.1</a>, > +<a href="errata52.html">5.2</a>, > +<br> > +<a href="errata53.html">5.3</a>, > +<a href="errata54.html">5.4</a>, > +<a href="errata55.html">5.5</a>, > +<a href="errata56.html">5.6</a>, > +<a href="errata57.html">5.7</a>, > +<a href="errata58.html">5.8</a>, > +<a href="errata59.html">5.9</a>, > +<a href="errata60.html">6.0</a>, > +<a href="errata61.html">6.1</a>, > +<a href="errata62.html">6.2</a>, > +<a href="errata63.html">6.3</a>, > +<a href="errata64.html">6.4</a>, > +<a href="errata65.html">6.5</a>, > +<a href="errata66.html">6.6</a>. > +<hr> > + > +<p> > +For the OpenBSD 2.0 release, the formal process for creating and > +distributing errata patches had not been developed yet. > +Nevertheless, a number of security advisories do exist. > + > +<ul> > + > +<li> > +<strong>SECURITY VULNERABILITY</strong> in BIND<br> > +<a href="advisories/sni_01_dns.txt">Secure Networks advisory 01</a> > +(November 18, 1996) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</strong> in Vixie cron<br> > +<a href="advisories/sni_02_cron.txt">Secure Networks advisory 02</a> > +(December 16, 1996) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</strong> in default cron jobs<br> > +<a href="advisories/sni_03_cronjobs.txt">Secure Networks advisory 03</a> > +(December 23, 1996) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</strong> related to source routing > +and TCP spoofing<br> > +<a href="advisories/sni_06_tcpoptions.txt">Secure Networks advisory 06</a> > +(February 10, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</strong> with 4.4BSD NFS file handles<br> > +<a href="advisories/sni_10_filehandles.txt">Secure Networks advisory 10</a> > +(March 7, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITIES</strong> in BIND<br> > +<a href="advisories/sni_12_resolverid.txt">Secure Networks advisory 12</a> > +(April 22, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITIES</strong> in Kerberos V<br> > +<a href="advisories/sni_13_kerberos.txt">Secure Networks advisory 13</a> > +(April 29, 1997) > +</ul> > + > +<hr> > Index: errata21.html > =================================================================== > RCS file: /cvs/www/errata21.html,v > retrieving revision 1.84 > diff -u -p -r1.84 errata21.html > --- errata21.html 30 Sep 2019 13:17:48 -0000 1.84 > +++ errata21.html 24 Apr 2020 20:25:21 -0000 > @@ -22,6 +22,7 @@ > <hr> > > For errata on a certain release, click below:<br> > +<a href="errata20.html">2.0</a>, > <a href="errata22.html">2.2</a>, > <a href="errata23.html">2.3</a>, > <a href="errata24.html">2.4</a>, > @@ -37,8 +38,8 @@ For errata on a certain release, click b > <a href="errata34.html">3.4</a>, > <a href="errata35.html">3.5</a>, > <a href="errata36.html">3.6</a>, > -<a href="errata37.html">3.7</a>, > <br> > +<a href="errata37.html">3.7</a>, > <a href="errata38.html">3.8</a>, > <a href="errata39.html">3.9</a>, > <a href="errata40.html">4.0</a>, > @@ -54,8 +55,8 @@ For errata on a certain release, click b > <a href="errata50.html">5.0</a>, > <a href="errata51.html">5.1</a>, > <a href="errata52.html">5.2</a>, > -<a href="errata53.html">5.3</a>, > <br> > +<a href="errata53.html">5.3</a>, > <a href="errata54.html">5.4</a>, > <a href="errata55.html">5.5</a>, > <a href="errata56.html">5.6</a>, > @@ -290,6 +291,37 @@ command without leading colon(s) like: > </pre> > <p> > > +<li> > +<strong>SECURITY VULNERABILITY</STRONG> in 4.4BSD procfs<br> > +<a href="advisories/procfs.txt">OpenBSD advisory</a> (June 24, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</STRONG> in 4.4BSD rfork<br> > +<a href="advisories/rfork.txt">OpenBSD advisory</a> (August 2, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</STRONG> in vacation<br> > +<a href="advisories/sni_18_vacation.txt">Secure Networks advisory 18</a> > +(September 1, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</STRONG> in I/O Signal Handling<br> > +<a href="advisories/signals.txt">OpenBSD advisory</a> (September 15, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</STRONG> in lpd<br> > +<a href="advisories/sni_19_lpd.txt">Secure Networks advisory 19</a> > +(October 2, 1997) > +<p> > + > +<li> > +<strong>SECURITY VULNERABILITY</STRONG> in tgetent<br> > +<a href="advisories/sni_20_tgetent.txt">Secure Networks advisory 20</a> > +(October 21, 1997) > </ul> > > <hr> > Index: errata22.html > =================================================================== > RCS file: /cvs/www/errata22.html,v > retrieving revision 1.99 > diff -u -p -r1.99 errata22.html > --- errata22.html 30 Sep 2019 13:17:48 -0000 1.99 > +++ errata22.html 24 Apr 2020 20:25:21 -0000 > @@ -164,6 +164,8 @@ variable semantics to mean that all sour > be blocked completely. > <a > href="https://ftp.openbsd.org/pub/OpenBSD/patches/2.2/common/sourceroute.patch"> > A kernel patch is provided</a>. > +For more details, see the <a href="advisories/sourceroute.txt">OpenBSD > +advisory</a>. > <p> > > <li id="ruserok"> > @@ -211,6 +213,7 @@ gain root trivially and/or turn securele > <a > href="https://ftp.openbsd.org/pub/OpenBSD/patches/2.2/common/vm_mmap.patch"> > A kernel patch is available which corrects this behaviour (this is > revision 3 of this patch)</a>. > +For more details, see the <a href="advisories/mmap.txt">OpenBSD advisory</a>. > <p> > > <li id="build1"> > Index: errata23.html > =================================================================== > RCS file: /cvs/www/errata23.html,v > retrieving revision 1.87 > diff -u -p -r1.87 errata23.html > --- errata23.html 30 Sep 2019 13:17:48 -0000 1.87 > +++ errata23.html 24 Apr 2020 20:25:21 -0000 > @@ -121,6 +121,8 @@ Chpass(1) has a file descriptor leak whi > attacker to modify /etc/master.passwd. > <a > href="https://ftp.openbsd.org/pub/OpenBSD/patches/2.3/common/chpass.patch"> > A source code patch exists which remedies this problem.</a> > +For more details, see the > +<a href="advisories/nai_28_chpass.txt">Network Associates advisory</a>. > <p> > > <li id="resid"> > Index: errata27.html > =================================================================== > RCS file: /cvs/www/errata27.html,v > retrieving revision 1.97 > diff -u -p -r1.97 errata27.html > --- errata27.html 30 Sep 2019 13:17:48 -0000 1.97 > +++ errata27.html 24 Apr 2020 20:25:22 -0000 > @@ -393,6 +393,8 @@ which disables its functionality, do > </pre> > <a > href="https://ftp.openbsd.org/pub/OpenBSD/patches/2.7/common/025_pw_error.patch"> > A source code patch exists which remedies this problem.</a> > +For more details, see the > +<a href="advisories/pw_error.txt">OpenBSD advisory</a>. > <p> > > <li id="talkd"> > Index: errata31.html > =================================================================== > RCS file: /cvs/www/errata31.html,v > retrieving revision 1.90 > diff -u -p -r1.90 errata31.html > --- errata31.html 30 Sep 2019 13:17:48 -0000 1.90 > +++ errata31.html 24 Apr 2020 20:25:22 -0000 > @@ -231,6 +231,7 @@ system call allows an attacker to overwr > code in kernel context.<br> > <a > href="https://ftp.openbsd.org/pub/OpenBSD/patches/3.1/common/014_scarg.patch"> > A source code patch exists which remedies this problem.</a> > +For more details, see the <a href="advisories/select.txt">OpenBSD > advisory</a>. > <p> > > <li id="kerntime"> > Index: advisories/res_random.txt > =================================================================== > RCS file: advisories/res_random.txt > diff -N advisories/res_random.txt > --- advisories/res_random.txt 2 Jul 2001 19:26:26 -0000 1.2 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,813 +0,0 @@ > - ###### ## ## ###### > - ## ### ## ## > - ###### ## # ## ## > - ## ## ### ## > - ###### . ## ## . ######. > - > - Secure Networks Inc. > - AND > - CORE Seguridad de la Informacion > - > - > - Security Advisory > - April 22, 1997 > - > - BIND Vulnerabilities and Solutions > - > - > -Problem Description > -~~~~~~~~~~~~~~~~~~~ > - > -This advisory contains descriptions and solutions for two vulnerabilities > -present in current BIND distributions. These vulnerabilities are actively > -being exploited on the Internet. > - > -I. The usage of predictable IDs in queries and recursed queries allows for > - remote cache corruption. This allows malicious users to alter domain > - name server caches to change the addresses and hostnames of hosts on the > - internet. > - > -II. A failure to check whether hostname lengths exceed MAXHOSTNAMELEN in > - size. This results in potential buffer overflows in programs which > - expect the BIND resolver to only return a maximum hostname length of > - MAXHOSTNAMELEN. > - > - > - > - Problem I. The usage of predictable ID's > - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > - > - > -Problem I. - Impact > -~~~~~~~~~~~~~~~~~~~ > - > -Remote root users can poison BIND and Microsoft Windows NT name server > -caches by forging UDP packets. We should note that unlike other well > -documented attacks, in this instance it is NOT necessary for the attacker > -to take over a DNS server or sniff the target network. > - > - > -Problem I. - Technical Details > -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > - > -This particular cache corruption attack requires that the target nameserver > -be configured to allow recursion. Recursion allows a nameserver to handle > -requests for zones or domains which it does not serve. When receiving a > -query for a zone or domain which is not served by the name server, the name > -server will transmit a query to a nameserver which serves the desired > -domain. Once a response is received from the second nameserver, the first > -nameserver sends the response back to the requesting party. > - > -The following attack is outlined in the paper "Addressing weaknesses in the > -Domain Name System Protocol" by Christopher Schuba and Eugene Spafford [6]. > -To the extent of our knowledge, this problem has not been previously > -addressed. The paper also assumes that the attacker has super-user access > -to a primary nameserver, here we demonstrate that this is not necessary nor > -are source routed packets required. > - > -Using the recursion feature, one can poison the cache on a name server with > -the following procedure: > - > - > -Problem I. - The Players > -~~~~~~~~~~~~~~~~~~~~~~~~ > - > -. HOST.ATTACKER.COM is the attacking host. > - > -. DNS.ATTACKER.COM is ATTACKER.COM's nameserver, we presume that this is > - the only name server for ATTACKER.COM to simplify the description. > - > -. DNS.TARGET.COM is the target nameserver which runs BIND. What we will > - attempt to do is add an A (address) resource record on DNS.TARGET.COM > - that will resolve WWW.SPOOFED.COM to 127.0.0.1. We are sure that > - WWW.SPOOFED.COM is not cached in DNS.TARGET.COM's DNS cache. > - > -. DNS.SPOOFED.COM is the nameserver for SPOOFED.COM's domain. We have > - determined this before the attack begins. Once again we just presume > - its the only one in order to simplify this description. > - > - > -Problem I. - The Attack > -~~~~~~~~~~~~~~~~~~~~~~~ > - > -A. First a query is sent to DNS.TARGET.COM asking for the address of > - UNKNOWN.ATTACKER.COM. Our query has the recursion desired bit set, > - meaning that if the nameserver we are querying has recursion enabled, > - it will query another nameserver with our query (assuming it does not > - have the information cached). > - > -B. DNS.TARGET.COM will first determine who serves the ATTACKER.COM > - domain, then it will build a query packet and send it to > - DNS.ATTACKER.COM. > - > -C. We sniff DNS.ATTACKER.COM's local network and retrieve the query packet > - sent by DNS.TARGET.COM to DNS.ATTACKER.COM. We can then determine > - the query ID (qid0) used by DNS.TARGET.COM. Chances are that the > - next queries generated by DNS.TARGET.COM will have query IDs that will > - fall in the range [qid0,qid0+N] where N is dependent on the amount of > - queries DNS.TARGET.COM is generating in the period of time on which the > - attack takes place. N is usually <= 10 for most cases. > - > -D. Once we have determined what the next query ID generated will be, we > - send a query to DNS.TARGET.COM asking for WWW.SPOOFED.COM's address. > - > -E. Then we start sending spoofed DNS replies from DNS.SPOOFED.COM, > - telling DNS.TARGET.COM that WWW.SPOOFED.COM is '127.0.0.1'. > - > -F. If we guessed the query ID used by DNS.TARGET.COM in its recursed > - query and our response is received first, our response will be taken > - as valid and the address will be cached. Subsequent responses will > - be discarded as duplicates. We can always send many (N*M) spoofed > - packets with different IDs in the range (qid0,qid0+N] so we will be > - sure that at least one of them will hit DNS.TARGET.COM and have the > - 'right' ID. M is a factor dependent of the amount of UDP packets we > - expect to lose on their way to DNS.TARGET.COM. > - > - > -Problem I. - The Result > -~~~~~~~~~~~~~~~~~~~~~~~ > - > -If the attack succeeded, any query to DNS.TARGET.COM asking for > -WWW.SPOOFED.COM's address, will get 127.0.0.1 as a response. Thus, > -any user on TARGET.COM's domain will connect to 127.0.0.1 if they try to > -contact WWW.SPOOFED.COM. > - > -The usage of 127.0.0.1 in this description is of course for instructional > -purposes, any IP address can be used, in particular an attacker could use > -its own IP address (BADGUY.COM's IP) so all connections to 'host' will go > -to 'BADGUY'. The attacker can then 'impersonate' WWW.SPOOFED.COM. Given > -this attack, it is easy to visualize the effects of impersonating a high > -traffic FTP distribution site. This attack can also be used to intercept > -email traffic, and bypass address based authentication methods, including > -TCP wrappers and firewalls. > - > - > -Problem I. - Notes > -~~~~~~~~~~~~~~~~~~ > - > -This attack depends on a few things to succeed: > - > -1. The attacker has complete control of DNS.ATTACKER.COM's network, > - he can both spoof and sniff DNS packets there. In particular, he can > - sniff DNS packets sent to DNS.ATTACKER.COM. > - > -2. Spoofed DNS responses sent from the attacker to DNS.TARGET.COM must > - be received before the legit response from DNS.SPOOFED.COM. This is > - very easy to achieve. In testing we have not yet encountered a situation > - where we could not get our packets to the nameserver first. > - > -3. The name server on DNS.TARGET.COM supports recursion and caches > - responses. This is common practice. It should be noted that most > - nameservers allow recursion (unless specifically denied by > - configuration options). Root name servers, however, do not allow > - recursion. > - > - If DNS.TARGET.COM caches negative responses as well (NCACHE), a denial > - of service attack can be performed, in this case, spoofed responses sent > - by the attacker will tell DNS.TARGET.COM that WWW.SPOOFED.COM does not > - exist (and be authorative on this). > - > - The existence of several nameservers for the domains does not alter the > - basic outline of this attack. The attacker would only need to send DNS > - responses with source addresses of each of SPOOFED.COM's nameservers. > - (N*M*I responses, where I is the number of nameservers). > - > - > -Problem I. - Systems Affected > -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > - > -- - All systems using BIND as their domain name server with recursion > - enabled. > - > -- - Windows NT (server) version 3.51 & 4.0 DNS server. > - Microsoft has been notified and has acknowledged this is a serious > - problem. No information on a fix is available. > - > - > - > - Problem II. Hostname length checking > - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > - > - > -Problem II. - Impact > -~~~~~~~~~~~~~~~~~~~~ > - > -BIND allows passing of hostnames larger than MAXHOSTNAMELEN in size to > -programs. As many programs utilize buffers of size MAXHOSTNAMELEN and > -copy the results from a query into these buffers, an overflow can occur. > -This can allow an attacker to execute arbitrary commands on a remote > -server in a worst case scenario. > - > - > -Problem II. - Systems Affected > -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > - > -All systems running BIND. > - > - > -Fix Information > -~~~~~~~~~~~~~~~ > - > -Obtain BIND version 4.9.5-P1. BIND is available from ftp.isc.org in > -the directory /isc/bind/src. Patches to solve both problem I and > -problem II are included at the end of this advisory. Once BIND > -has been obtained, follow the following procedure: > - > -i. First remove the patches from this text. This can be performed by > - removing all text in between the "CUT HERE" lines, and saving it > - to a text file (i.e. /tmp/diffs.txt). > - > -ii. Perform the following operations to apply the patches: > - > -% gzip -d bind.tar.gz > -% mkdir bind > -% cd bind > -% tar -xvf ../bind.tar > -% patch < /tmp/diffs.txt > - > -iii. Rebuild BIND > - > - > -Attributions > -~~~~~~~~~~~~ > - > - Ivan Arce <[email protected]> > - Emiliano Kargieman <[email protected]> > - > - The OpenBSD Project > - Who found a good solution to problem, developed a solution and > - performed various tests to ensure its correctness. Individuals > - involved in this effort were: > - > - Theo de Raadt <[email protected]> > - Niels Provos <[email protected]> > - Todd Miller <[email protected]> > - Allen Briggs <[email protected]> > - > - Further attributions: > - AUSCERT <[email protected]> > - David Sacerdote <[email protected]> > - Oliver Friedrichs <[email protected]> > - Alfred Huger <[email protected]> > - > - > -Additional Information: > -~~~~~~~~~~~~~~~~~~~~~~~ > - > - [1] Vixie P. , "DNS and BIND security issues". > - This was originally published in the proceedings of the > - 5th USENIX Security Symposium and its included in the BIND > - distribution under the doc/misc directory. > - > - [2] Kumar A., Postel J., Neuman C., Danzig P. , Miller S. > - "RFC1536: Common DNS implementation errors and suggested fixes" > - > - Refer to problem 2 for a description of other weaknesses previously > - found in the recursion scheme. > - > - [3] Lottor, M., "RFC1033: Domain administrators operations guide" > - [4] Mockapetris, P., "RFC1034: Domain names - Concepts and facilities" > - [5] Mockapetris, P., "RFC1035: Domain Names - Implementation and > -specification" > - > - [6] Schuba Christopher and Spafford Eugene, "Adressing weaknesses in the > - Domain Name System Protocol", COAST Laboratory, Department of Computer > - Science, Purdue University. > - > - Comments and questions regarding this advisory can be sent to: > - > - Ivan Arce <[email protected]> > - Emiliano Kargieman <[email protected]> > - > - For more information about CORE S.A. contact: [email protected] > - > - Or visit: http://www.secnet.com/core > - > - Encrypted mail can also be sent to <[email protected]> encrypted with > - the following PGP key: > - > -Type Bits/KeyID Date User ID > -pub 1024/9E55000D 1997/01/13 Secure Networks Inc. <[email protected]> > - Secure Networks <[email protected]> > - > -- -----BEGIN PGP PUBLIC KEY BLOCK----- > -Version: 2.6.3ia > - > -mQCNAzLaFzIAAAEEAKsVzPR7Y6oFN5VPE/Rp6Sm82oE0y6Mkuof8QzERV6taihn5 > -uySb31UeNJ4l6Ud9alOPT/0YdeOO9on6eD1iU8qumFxzO3TLm8nTAdZehQSAQfoa > -rWmpwj7KpXN/3n+VyBWvhpBdKxe08SQN4ZjvV5HXy4YIrE5bTbgIhFKeVQANAAUR > -tCVTZWN1cmUgTmV0d29ya3MgSW5jLiA8c25pQHNlY25ldC5jb20+iQCVAwUQM1yd > -EB/bLKAOe7p9AQFptAQAiYpaZCpSmGgr05E698Z3t5r5BPAKUEtgvF53AvZUQLxz > -ZsYsVU5l5De0qKWJOQ/9LiDyWu1lvKhlTphbLy2RatWD4kO3oQL9v3TpSXm2WQhU > -uIzyZvj7S5ENodNnKn+gCDIvbou6OMot+7dRbWWgN2oabbru4CSlOxbG++yaTz+J > -AJUDBRAzTefbtOXez5VgyLkBAd0bA/43eGEgvPOFK+HHWCPpkSWCwtrtDU/dxOVz > -9erHnT/CRxeojCI+50f71Qe+kvx9Q1odz2Jl/fLxhnPQdbPnpWblIbu4F8H+Syrj > -HTilDrl1DWa/nUNgK8sb27SMviELczP1a8gwA1eo5SUCG5TWLLTAzjWOgTxod2Ha > -OwseUHmqVIkAlQMFEDNOVsr/d6Iw8NVIbQEBxM0D/14XRfgSLwszgJcVbslMHm/B > -fF6tHoWYojzQle3opOuMYHNN8GsMZRkc1qQ8QuNA9Aj5+qDqEontGjV5IvhBu1fY > -FM77AhagskaFCZxwqV64Qrk328WDO89NGSd+RuovVNruDdn20TxNCEVuPTHjI0UA > -8H+E6FW9jexg6RTHhPXYtCVTZWN1cmUgTmV0d29ya3MgPHNlY3VyaXR5QHNlY25l > -dC5jb20+iQCVAwUQMtqTKB/bLKAOe7p9AQFw5wQAgUwqJ+ZqfEy/lO1srU3nzxLA > -X0uHGHrMptRy/LFo8swD6G1TtWExUc3Yv/6g2/YK09b5WmplEJ+Q09maQIw+RU/s > -cIY+EsPauqIq4JTGh/Nm0Z4UDl2Y1x4GNtm0YqezxUPS0P0A3LHVLJ3Uo5og0G8O > -gPNrfbVz5ieT14OSCWCJAJUDBRAy2hd2/3eiMPDVSG0BAVNhBACfupfAcNhhnQaq > -aI03DOOiZSRjvql1xw4V+pPhM+IksdSK3YNUZVJJtANacgDhBT+jAPRaYbBWI3A5 > -ZMdcSNM8aTG0LWMLIOiOYEm6Lgd3idRBFN0Js08eyITl8mhZ33mDe4I0KQri9UiV > -ZcPYTbb9CWM6Hv2cMbt6S6kLnFziqIkAlQMFEDLaF0+4CIRSnlUADQEBCLoEAJwt > -UofDgvyZ4nCDx1KKAPkkXBRaPMWBp46xeTVcxaYiloZfwHfpk1h2mEJAxmAsvizl > -OtIppHl4isUxcGi/E2mLCLMvis22/IQP/9obPahPvgNaMLVtZljO1Nv3QFEkNciL > -FEUTNJHR1ko7ibCxkBs4cOpirFuvTMDvWnNaXAf8 > -=DchE > -- -----END PGP PUBLIC KEY BLOCK----- > - > - > -Copyright Notice > -~~~~~~~~~~~~~~~~ > -The contents of this advisory are Copyright (C) 1997 Secure Networks Inc and > -CORE Seguridad de la Informacion S.A., and may be distributed freely provided > -that no fee is charged for distribution, and that proper credit is given. > - > - You can find Secure Networks papers at ftp://ftp.secnet.com/pub/papers > - and advisories at ftp://ftp.secnet.com/advisories > - > - You can browse our web site at http://www.secnet.com > - > - You can subscribe to our security advisory mailing list by sending mail to > - [email protected] with the line "subscribe sni-advisories" > - > - > -Patches > -~~~~~~~ > - > - --- CUT HERE --- > - > -diff -cNr ../bind-4.9.5-P1-rel/contrib/host/host.c ./contrib/host/host.c > -*** ../bind-4.9.5-P1-rel/contrib/host/host.c Sat Oct 12 16:24:42 1996 > -- --- ./contrib/host/host.c Wed Apr 9 15:27:05 1997 > -*************** > -*** 537,543 **** > - _res.retrans = DEF_RETRANS; /* timeout in secs between retries */ > - > - /* initialize packet id */ > -! _res.id = getpid() & 0x7fff; > - > - /* save new defaults */ > - new_res = _res; > -- --- 537,543 ---- > - _res.retrans = DEF_RETRANS; /* timeout in secs between retries */ > - > - /* initialize packet id */ > -! _res.id = res_randomid(); > - > - /* save new defaults */ > - new_res = _res; > -diff -cNr ../bind-4.9.5-P1-rel/named/ns_main.c ./named/ns_main.c > -*** ../bind-4.9.5-P1-rel/named/ns_main.c Tue Nov 26 03:11:23 1996 > -- --- ./named/ns_main.c Wed Apr 9 00:24:14 1997 > -*************** > -*** 1658,1668 **** > - } > - > - /* > -! * These are here in case we ever want to get more clever, like perhaps > -! * using a bitmap to keep track of outstanding queries and a random > -! * allocation scheme to make it a little harder to predict them. Note > -! * that the resolver will need the same protection so the cleverness > -! * should be put there rather than here; this is just an interface layer. > - */ > - > - void > -- --- 1658,1668 ---- > - } > - > - /* > -! * This just an interface layer to the random number generator > -! * used in the resolver. > -! * A special random number generator is used to create non predictable > -! * and non repeating ids over a long period. It also avoids reuse > -! * by switching between two distinct number cycles. > - */ > - > - void > -*************** > -*** 1674,1683 **** > - u_int16_t > - nsid_next() > - { > -! if (nsid_state == 65535) > -! nsid_state = 0; > -! else > -! nsid_state++; > - return (nsid_state); > - } > - > -- --- 1674,1680 ---- > - u_int16_t > - nsid_next() > - { > -! nsid_state = res_randomid(); > - return (nsid_state); > - } > - > -diff -cNr ../bind-4.9.5-P1-rel/res/Makefile ./res/Makefile > -*** ../bind-4.9.5-P1-rel/res/Makefile Thu Aug 8 16:49:48 1996 > -- --- ./res/Makefile Wed Apr 9 00:32:13 1997 > -*************** > -*** 77,89 **** > - res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ > - getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ > - gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c \ > -! inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c > - > - OBJS= base64.o herror.o res_debug.o res_data.o \ > - res_comp.o res_init.o res_mkquery.o res_query.o res_send.o \ > - getnetbyaddr.o getnetbyname.o getnetent.o getnetnamadr.o \ > - gethnamaddr.o sethostent.o nsap_addr.o hostnamelen.o inet_addr.o \ > -! inet_ntop.o inet_neta.o inet_pton.o inet_net_ntop.o inet_net_pton.o > - > - all: libresolv.a > - > -- --- 77,91 ---- > - res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ > - getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ > - gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c \ > -! inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c \ > -! res_random.c > - > - OBJS= base64.o herror.o res_debug.o res_data.o \ > - res_comp.o res_init.o res_mkquery.o res_query.o res_send.o \ > - getnetbyaddr.o getnetbyname.o getnetent.o getnetnamadr.o \ > - gethnamaddr.o sethostent.o nsap_addr.o hostnamelen.o inet_addr.o \ > -! inet_ntop.o inet_neta.o inet_pton.o inet_net_ntop.o inet_net_pton.o \ > -! res_random.o > - > - all: libresolv.a > - > -diff -cNr ../bind-4.9.5-P1-rel/res/res_comp.c ./res/res_comp.c > -*** ../bind-4.9.5-P1-rel/res/res_comp.c Mon Dec 2 02:17:22 1996 > -- --- ./res/res_comp.c Fri Apr 18 18:45:02 1997 > -*************** > -*** 98,103 **** > -- --- 98,105 ---- > - > - dn = exp_dn; > - cp = comp_dn; > -+ if (length > MAXHOSTNAMELEN-1) > -+ length = MAXHOSTNAMELEN-1; > - eom = exp_dn + length; > - /* > - * fetch next label in domain name > -diff -cNr ../bind-4.9.5-P1-rel/res/res_init.c ./res/res_init.c > -*** ../bind-4.9.5-P1-rel/res/res_init.c Sat Sep 28 00:51:07 1996 > -- --- ./res/res_init.c Wed Apr 9 00:33:30 1997 > -*************** > -*** 197,209 **** > - if (!(_res.options & RES_INIT)) > - _res.options = RES_DEFAULT; > - > -- - /* > -- - * This one used to initialize implicitly to zero, so unless the app > -- - * has set it to something in particular, we can randomize it now. > -- - */ > -- - if (!_res.id) > -- - _res.id = res_randomid(); > -- - > - #ifdef USELOOPBACK > - _res.nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1); > - #else > -- --- 197,202 ---- > -*************** > -*** 644,655 **** > - return(0); /* if not using DNS configuration from NetInfo */ > - } > - #endif /* NeXT */ > -- - > -- - u_int > -- - res_randomid() > -- - { > -- - struct timeval now; > -- - > -- - gettimeofday(&now, NULL); > -- - return (0xffff & (now.tv_sec ^ now.tv_usec ^ getpid())); > -- - } > -- --- 637,639 ---- > -diff -cNr ../bind-4.9.5-P1-rel/res/res_mkquery.c ./res/res_mkquery.c > -*** ../bind-4.9.5-P1-rel/res/res_mkquery.c Sat Sep 28 00:37:58 1996 > -- --- ./res/res_mkquery.c Wed Apr 9 00:31:30 1997 > -*************** > -*** 107,118 **** > - #endif > - /* > - * Initialize header fields. > - */ > - if ((buf == NULL) || (buflen < HFIXEDSZ)) > - return (-1); > - bzero(buf, HFIXEDSZ); > - hp = (HEADER *) buf; > -! hp->id = htons(++_res.id); > - hp->opcode = op; > - hp->rd = (_res.options & RES_RECURSE) != 0; > - hp->rcode = NOERROR; > -- --- 107,123 ---- > - #endif > - /* > - * Initialize header fields. > -+ * > -+ * A special random number generator is used to create non > predictable > -+ * and non repeating ids over a long period. It also avoids reuse > -+ * by switching between two distinct number cycles. > - */ > -+ > - if ((buf == NULL) || (buflen < HFIXEDSZ)) > - return (-1); > - bzero(buf, HFIXEDSZ); > - hp = (HEADER *) buf; > -! hp->id = htons(_res.id=res_randomid()); > - hp->opcode = op; > - hp->rd = (_res.options & RES_RECURSE) != 0; > - hp->rcode = NOERROR; > -diff -cNr ../bind-4.9.5-P1-rel/res/res_random.c ./res/res_random.c > -*** ../bind-4.9.5-P1-rel/res/res_random.c Wed Dec 31 17:00:00 1969 > -- --- ./res/res_random.c Tue Apr 22 02:31:25 1997 > -*************** > -*** 0 **** > -- --- 1,262 ---- > -+ /* $OpenBSD: res_random.txt,v 1.2 2001/07/02 19:26:26 jufi Exp $ */ > -+ > -+ /* > -+ * Copyright 1997 Niels Provos <[email protected]> > -+ * All rights reserved. > -+ * > -+ * Theo de Raadt <[email protected]> came up with the idea of using > -+ * such a mathematical system to generate more random (yet non-repeating) > -+ * ids to solve the resolver/named problem. But Niels designed the > -+ * actual system based on the constraints. > -+ * > -+ * Redistribution and use in source and binary forms, with or without > -+ * modification, are permitted provided that the following conditions > -+ * are met: > -+ * 1. Redistributions of source code must retain the above copyright > -+ * notice, this list of conditions and the following disclaimer. > -+ * 2. Redistributions in binary form must reproduce the above copyright > -+ * notice, this list of conditions and the following disclaimer in the > -+ * documentation and/or other materials provided with the distribution. > -+ * 3. All advertising materials mentioning features or use of this software > -+ * must display the following acknowledgement: > -+ * This product includes software developed by Niels Provos. > -+ * 4. The name of the author may not be used to endorse or promote products > -+ * derived from this software without specific prior written permission. > -+ * > -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR > -+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED > WARRANTIES > -+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. > -+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, > -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT > -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > USE, > -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > -+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF > -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > -+ */ > -+ > -+ /* > -+ * seed = random 15bit > -+ * n = prime, g0 = generator to n, > -+ * j = random so that gcd(j,n-1) == 1 > -+ * g = g0^j mod n will be a generator again. > -+ * > -+ * X[0] = random seed. > -+ * X[n] = a*X[n-1]+b mod m is a Linear Congruential Generator > -+ * with a = 7^(even random) mod m, > -+ * b = random with gcd(b,m) == 1 > -+ * m = 31104 and a maximal period of m-1. > -+ * > -+ * The transaction id is determined by: > -+ * id[n] = seed xor (g^X[n] mod n) > -+ * > -+ * Effectivly the id is restricted to the lower 15 bits, thus > -+ * yielding two different cycles by toggling the msb on and off. > -+ * This avoids reuse issues caused by reseeding. > -+ * > -+ * The 16 bit space is very small and brute force attempts are > -+ * entirly feasible, we skip a random number of transaction ids > -+ * so that an attacker will not get sequential ids. > -+ */ > -+ > -+ #include <sys/types.h> > -+ #include <netinet/in.h> > -+ #include <sys/time.h> > -+ #include <resolv.h> > -+ > -+ #if defined(BSD) && (BSD >= 199103) > -+ # include <unistd.h> > -+ # include <stdlib.h> > -+ # include <string.h> > -+ #else > -+ # include "../conf/portability.h" > -+ #endif > -+ > -+ #define RU_OUT 180 /* Time after wich will be reseeded */ > -+ #define RU_MAX 30000 /* Uniq cycle, avoid blackjack > -prediction */ > -+ #define RU_GEN 2 /* Starting generator */ > -+ #define RU_N 32749 /* RU_N-1 = 2*2*3*2729 */ > -+ #define RU_AGEN 7 /* determine ru_a as > -RU_AGEN^(2*rand) */ > -+ #define RU_M 31104 /* RU_M = 2^7*3^5 - don't change */ > -+ > -+ #define PFAC_N 3 > -+ const static u_int16_t pfacts[PFAC_N] = { > -+ 2, > -+ 3, > -+ 2729 > -+ }; > -+ > -+ static u_int16_t ru_x; > -+ static u_int16_t ru_seed; > -+ static u_int16_t ru_a, ru_b; > -+ static u_int16_t ru_g; > -+ static u_int16_t ru_counter = 0; > -+ static u_int16_t ru_msb = 0; > -+ static long ru_reseed; > -+ static u_int32_t tmp; /* Storage for unused random */ > -+ static struct timeval tv; > -+ > -+ static u_int32_t pmod __P((u_int32_t, u_int32_t, u_int32_t)); > -+ static void res_initid __P((void)); > -+ > -+ #ifndef __OpenBSD__ > -+ /* > -+ * No solid source of strong random in the system. Sigh. Fake it. > -+ */ > -+ u_long > -+ arc4random() > -+ { > -+ static char state[256]; > -+ char *savestate; > -+ char *setstate(); > -+ static unsigned seed; > -+ static int count; > -+ u_long datum; > -+ > -+ if (++count == 129837 || seed == 0) { > -+ struct timeval tv; > -+ > -+ count = 0; > -+ gettimeofday(&tv, NULL); > -+ seed = getpid() ^ tv.tv_sec ^ tv.tv_usec; > -+ initstate(seed, state, sizeof state); > -+ } > -+ savestate = setstate(state); > -+ datum = random(); > -+ setstate(savestate); > -+ return (datum); > -+ } > -+ > -+ #endif > -+ > -+ /* > -+ * Do a fast modular exponation, returned value will be in the range > -+ * of 0 - (mod-1) > -+ */ > -+ > -+ static u_int32_t > -+ pmod(gen, exp, mod) > -+ u_int32_t gen, exp, mod; > -+ { > -+ u_int32_t s, t, u; > -+ > -+ s = 1; > -+ t = gen; > -+ u = exp; > -+ > -+ while (u) { > -+ if (u & 1) > -+ s = (s*t) % mod; > -+ u >>= 1; > -+ t = (t*t) % mod; > -+ } > -+ return (s); > -+ } > -+ > -+ /* > -+ * Initalizes the seed and chooses a suitable generator. Also toggles > -+ * the msb flag. The msb flag is used to generate two distinct > -+ * cycles of random numbers and thus avoiding reuse of ids. > -+ * > -+ * This function is called from res_randomid() when needed, an > -+ * application does not have to worry about it. > -+ */ > -+ static void > -+ res_initid() > -+ { > -+ u_int16_t j, i; > -+ int noprime = 1; > -+ > -+ tmp = arc4random(); > -+ ru_x = (tmp & 0xFFFF) % RU_M; > -+ > -+ /* 15 bits of random seed */ > -+ ru_seed = (tmp >> 16) & 0x7FFF; > -+ > -+ tmp = arc4random(); > -+ > -+ /* Determine the LCG we use */ > -+ ru_b = (tmp & 0xfffe) | 1; > -+ ru_a = pmod(RU_AGEN, (tmp >> 16) & 0xfffe, RU_M); > -+ while (ru_b % 3 == 0) > -+ ru_b += 2; > -+ > -+ tmp = arc4random(); > -+ j = tmp % RU_N; > -+ tmp = tmp >> 16; > -+ > -+ /* > -+ * Do a fast gcd(j,RU_N-1), so we can find a j with > -+ * gcd(j, RU_N-1) == 1, giving a new generator for > -+ * RU_GEN^j mod RU_N > -+ */ > -+ > -+ while (noprime) { > -+ for (i=0; i<PFAC_N; i++) > -+ if (j%pfacts[i] == 0) > -+ break; > -+ > -+ if (i>=PFAC_N) > -+ noprime = 0; > -+ else > -+ j = (j+1) % RU_N; > -+ } > -+ > -+ ru_g = pmod(RU_GEN,j,RU_N); > -+ ru_counter = 0; > -+ > -+ gettimeofday(&tv, NULL); > -+ ru_reseed = tv.tv_sec + RU_OUT; > -+ ru_msb = ru_msb == 0x8000 ? 0 : 0x8000; > -+ } > -+ > -+ u_int > -+ res_randomid() > -+ { > -+ int i, n; > -+ > -+ gettimeofday(&tv, NULL); > -+ if (ru_counter >= RU_MAX || tv.tv_sec > ru_reseed) > -+ res_initid(); > -+ > -+ if (!tmp) > -+ tmp = arc4random(); > -+ > -+ /* Skip a random number of ids */ > -+ n = tmp & 0x2f; tmp = tmp >> 6; > -+ if (ru_counter + n >= RU_MAX) > -+ res_initid(); > -+ > -+ for (i=0; i<=n; i++) > -+ /* Linear Congruential Generator */ > -+ ru_x = (ru_a*ru_x + ru_b) % RU_M; > -+ > -+ ru_counter += i; > -+ > -+ return (ru_seed ^ pmod(ru_g,ru_x,RU_N)) | ru_msb; > -+ } > -+ > -+ #if 0 > -+ void > -+ main(int argc, char **argv) > -+ { > -+ int i, n; > -+ u_int16_t wert; > -+ > -+ res_initid(); > -+ > -+ printf("Generator: %d\n", ru_g); > -+ printf("Seed: %d\n", ru_seed); > -+ printf("Reseed at %ld\n", ru_reseed); > -+ printf("Ru_X: %d\n", ru_x); > -+ printf("Ru_A: %d\n", ru_a); > -+ printf("Ru_B: %d\n", ru_b); > -+ > -+ n = atoi(argv[1]); > -+ for (i=0;i<n;i++) { > -+ wert = res_randomid(); > -+ printf("%06d\n", wert); > -+ } > -+ } > -+ #endif > -+ > - > - --- CUT HERE --- > - > ------BEGIN PGP SIGNATURE----- > -Version: 2.6.3ia > -Charset: noconv > - > -iQCVAwUBM1ygQLgIhFKeVQANAQHhvwQAgm9c8ai94FzE03dZ3S8HQmpiZXDB4cGU > -EqZYu32tV7a/eHT/fyw01uMXpeLIaZERQNGTJokwpZKbCUAY67ZzsOGYqp5Ja+To > -YN3WMD1pXHPEC5+vq+r94chX0zobvjPrd3Rhg1PHxEcrkMjsliiYPNnTrotOMrUy > -NHiFI/kbY0Q= > -=vf1T > ------END PGP SIGNATURE----- > - > ---[0124]-- > Index: advisories/sni_12_resolverid.txt > =================================================================== > RCS file: /cvs/www/advisories/sni_12_resolverid.txt,v > retrieving revision 1.2 > diff -u -p -r1.2 sni_12_resolverid.txt > --- advisories/sni_12_resolverid.txt 2 Jul 2001 19:26:27 -0000 1.2 > +++ advisories/sni_12_resolverid.txt 24 Apr 2020 20:25:22 -0000 > @@ -422,16 +422,32 @@ diff -cNr ../bind-4.9.5-P1-rel/res/Makef > - --- ./res/Makefile Wed Apr 9 00:32:13 1997 > *************** > *** 77,89 **** > - res_comp.c res_init.c res_mkquery.c res_query.c res_send.c > getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c > gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c ! > inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c > - > - OBJS= base64.o herror.o res_debug.o res_data.o res_comp.o > res_init.o res_mkquery.o res_query.o res_send.o getnetbyaddr.o > getnetbyname.o getnetent.o getnetnamadr.o gethnamaddr.o sethostent.o > nsap_addr.o hostnamelen.o inet_addr.o ! inet_ntop.o inet_neta.o > inet_pton.o inet_net_ntop.o inet_net_pton.o > + res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ > + getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ > + gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c \ > +! inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c > + > + OBJS= base64.o herror.o res_debug.o res_data.o \ > + res_comp.o res_init.o res_mkquery.o res_query.o res_send.o \ > + getnetbyaddr.o getnetbyname.o getnetent.o getnetnamadr.o \ > + gethnamaddr.o sethostent.o nsap_addr.o hostnamelen.o inet_addr.o \ > +! inet_ntop.o inet_neta.o inet_pton.o inet_net_ntop.o inet_net_pton.o > > all: libresolv.a > > - --- 77,91 ---- > - res_comp.c res_init.c res_mkquery.c res_query.c res_send.c > getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c > gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c ! > inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c ! > res_random.c > - > - OBJS= base64.o herror.o res_debug.o res_data.o res_comp.o > res_init.o res_mkquery.o res_query.o res_send.o getnetbyaddr.o > getnetbyname.o getnetent.o getnetnamadr.o gethnamaddr.o sethostent.o > nsap_addr.o hostnamelen.o inet_addr.o ! inet_ntop.o inet_neta.o > inet_pton.o inet_net_ntop.o inet_net_pton.o ! res_random.o > + res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ > + getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ > + gethnamaddr.c sethostent.c nsap_addr.c hostnamelen.c inet_addr.c \ > +! inet_ntop.c inet_neta.c inet_pton.c inet_net_ntop.c inet_net_pton.c \ > +! res_random.c > + > + OBJS= base64.o herror.o res_debug.o res_data.o \ > + res_comp.o res_init.o res_mkquery.o res_query.o res_send.o \ > + getnetbyaddr.o getnetbyname.o getnetent.o getnetnamadr.o \ > + gethnamaddr.o sethostent.o nsap_addr.o hostnamelen.o inet_addr.o \ > +! inet_ntop.o inet_neta.o inet_pton.o inet_net_ntop.o inet_net_pton.o \ > +! res_random.o > > all: libresolv.a > > @@ -800,5 +816,4 @@ NHiFI/kbY0Q= > =vf1T > -----END PGP SIGNATURE----- > > - > - > +--[0124]--
