summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorroberto <roberto@FreeBSD.org>2004-07-20 15:18:31 +0000
committerroberto <roberto@FreeBSD.org>2004-07-20 15:18:31 +0000
commit4155ac9f07c2f1986843c07b428ac66e6f11ffe0 (patch)
tree7974d2a5e67d1a45734109ca9bac8efa01728f35 /contrib
parentcdfc2f45fe8fcd9851febc86a614aa5c097c4323 (diff)
downloadFreeBSD-src-4155ac9f07c2f1986843c07b428ac66e6f11ffe0.zip
FreeBSD-src-4155ac9f07c2f1986843c07b428ac66e6f11ffe0.tar.gz
Merge conflicts (see also previous commit).
Reinsert our local changes to ntp_control.c: 1.4: Do not log every potential exploit attempt since a denial-of-service may result 1.5: int -> unsigned char fixes
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ntp/ntpd/ntp_control.c318
1 files changed, 170 insertions, 148 deletions
diff --git a/contrib/ntp/ntpd/ntp_control.c b/contrib/ntp/ntpd/ntp_control.c
index 1d428a2..eace060 100644
--- a/contrib/ntp/ntpd/ntp_control.c
+++ b/contrib/ntp/ntpd/ntp_control.c
@@ -23,10 +23,6 @@
#include <netinet/in.h>
#include <arpa/inet.h>
-#ifdef PUBKEY
-#include "ntp_crypto.h"
-#endif /* PUBKEY */
-
/*
* Structure to hold request procedure information
*/
@@ -51,7 +47,9 @@ struct ctl_proc {
* Request processing routines
*/
static void ctl_error P((int));
+#ifdef REFCLOCK
static u_short ctlclkstatus P((struct refclockstat *));
+#endif
static void ctl_flushpkt P((int));
static void ctl_putdata P((const char *, unsigned int, int));
static void ctl_putstr P((const char *, const char *,
@@ -61,7 +59,7 @@ static void ctl_putuint P((const char *, u_long));
static void ctl_puthex P((const char *, u_long));
static void ctl_putint P((const char *, long));
static void ctl_putts P((const char *, l_fp *));
-static void ctl_putadr P((const char *, u_int32));
+static void ctl_putadr P((const char *, u_int32, struct sockaddr_storage*));
static void ctl_putid P((const char *, char *));
static void ctl_putarray P((const char *, double *, int));
static void ctl_putsys P((int));
@@ -79,7 +77,7 @@ static void read_clock_status P((struct recvbuf *, int));
static void write_clock_status P((struct recvbuf *, int));
static void set_trap P((struct recvbuf *, int));
static void unset_trap P((struct recvbuf *, int));
-static struct ctl_trap *ctlfindtrap P((struct sockaddr_in *,
+static struct ctl_trap *ctlfindtrap P((struct sockaddr_storage *,
struct interface *));
static struct ctl_proc control_codes[] = {
@@ -119,16 +117,16 @@ static struct ctl_var sys_var[] = {
{ CS_VERSION, RO, "version" }, /* 17 */
{ CS_STABIL, RO, "stability" }, /* 18 */
{ CS_VARLIST, RO, "sys_var_list" }, /* 19 */
-#ifdef PUBKEY
+#ifdef OPENSSL
{ CS_FLAGS, RO, "flags" }, /* 20 */
{ CS_HOST, RO, "hostname" }, /* 21 */
- { CS_PUBLIC, RO, "publickey" }, /* 22 */
- { CS_CERTIF, RO, "certificate" }, /* 23 */
- { CS_DHPARAMS, RO, "params" }, /* 24 */
- { CS_REVTIME, RO, "refresh" }, /* 25 */
- { CS_LEAPTAB, RO, "leapseconds" }, /* 26 */
- { CS_TAI, RO, "tai"}, /* 27 */
-#endif /* PUBKEY */
+ { CS_PUBLIC, RO, "hostkey" }, /* 22 */
+ { CS_CERTIF, RO, "cert" }, /* 23 */
+ { CS_REVTIME, RO, "refresh" }, /* 24 */
+ { CS_LEAPTAB, RO, "leapseconds" }, /* 25 */
+ { CS_TAI, RO, "tai" }, /* 26 */
+ { CS_DIGEST, RO, "signature" }, /* 27 */
+#endif /* OPENSSL */
{ 0, EOV, "" } /* 28 */
};
@@ -157,14 +155,15 @@ static u_char def_sys_var[] = {
CS_DRIFT,
CS_JITTER,
CS_STABIL,
-#ifdef PUBKEY
- CS_FLAGS,
+#ifdef OPENSSL
CS_HOST,
- CS_CERTIF,
- CS_DHPARAMS,
+ CS_DIGEST,
+ CS_FLAGS,
+ CS_PUBLIC,
CS_REVTIME,
CS_LEAPTAB,
-#endif /* PUBKEY */
+ CS_CERTIF,
+#endif /* OPENSSL */
0
};
@@ -210,20 +209,18 @@ static struct ctl_var peer_var[] = {
{ CP_FILTERROR, RO, "filtdisp=" }, /* 34 */
{ CP_FLASH, RO, "flash" }, /* 35 */
{ CP_TTL, RO, "ttl" }, /* 36 */
- { CP_TTLMAX, RO, "ttlmax" }, /* 37 */
+ { CP_RANK, RO, "rank" }, /* 37 */
{ CP_VARLIST, RO, "peer_var_list" }, /* 38 */
-#ifdef PUBKEY
- { CP_FLAGS, RO, "flags" }, /* 38 */
- { CP_HOST, RO, "hostname" }, /* 39 */
- { CP_PUBLIC, RO, "publickey" }, /* 40 */
- { CP_CERTIF, RO, "certificate" }, /* 41 */
- { CP_SESKEY, RO, "pcookie" }, /* 42 */
- { CP_SASKEY, RO, "hcookie" }, /* 43 */
- { CP_INITSEQ, RO, "initsequence" }, /* 44 */
- { CP_INITKEY, RO, "initkey" }, /* 45 */
- { CP_INITTSP, RO, "timestamp" }, /* 46 */
-#endif /* PUBKEY */
- { 0, EOV, "" } /* 47 */
+#ifdef OPENSSL
+ { CP_FLAGS, RO, "flags" }, /* 39 */
+ { CP_HOST, RO, "hostname" }, /* 40 */
+ { CP_INITSEQ, RO, "initsequence" }, /* 41 */
+ { CP_INITKEY, RO, "initkey" }, /* 42 */
+ { CP_INITTSP, RO, "timestamp" }, /* 43 */
+ { CP_DIGEST, RO, "signature" }, /* 44 */
+ { CP_IDENT, RO, "identity" }, /* 45 */
+#endif /* OPENSSL */
+ { 0, EOV, "" } /* 39/46 */
};
@@ -250,7 +247,6 @@ static u_char def_peer_var[] = {
CP_FLASH,
CP_KEYID,
CP_TTL,
- CP_TTLMAX,
CP_OFFSET,
CP_DELAY,
CP_DISPERSION,
@@ -262,13 +258,13 @@ static u_char def_peer_var[] = {
CP_FILTDELAY,
CP_FILTOFFSET,
CP_FILTERROR,
-#ifdef PUBKEY
- CP_FLAGS,
+#ifdef OPENSSL
CP_HOST,
- CP_CERTIF,
- CP_SESKEY,
+ CP_DIGEST,
+ CP_FLAGS,
+ CP_IDENT,
CP_INITSEQ,
-#endif /* PUBKEY */
+#endif /* OPENSSL */
0
};
@@ -455,7 +451,7 @@ static u_char * datapt;
static u_char * dataend;
static int datalinelen;
static int datanotbinflag;
-static struct sockaddr_in *rmt_addr;
+static struct sockaddr_storage *rmt_addr;
static struct interface *lcl_inter;
static u_char res_authenticate;
@@ -740,14 +736,16 @@ ctlpeerstatus(
/*
* ctlclkstatus - return a status word for this clock
*/
+#ifdef REFCLOCK
static u_short
ctlclkstatus(
struct refclockstat *this_clock
)
{
- return ((u_short)(this_clock->currentstatus) << 8) |
- (u_short)(this_clock->lastevent);
+ return ((u_short)(((this_clock->currentstatus) << 8) |
+ (this_clock->lastevent)));
}
+#endif
/*
@@ -1079,12 +1077,13 @@ ctl_putts(
/*
- * ctl_putadr - write a dotted quad IP address into the response
+ * ctl_putadr - write an IP address into the response
*/
static void
ctl_putadr(
const char *tag,
- u_int32 addr
+ u_int32 addr32,
+ struct sockaddr_storage* addr
)
{
register char *cp;
@@ -1097,7 +1096,10 @@ ctl_putadr(
*cp++ = *cq++;
*cp++ = '=';
- cq = numtoa(addr);
+ if (addr == NULL)
+ cq = numtoa(addr32);
+ else
+ cq = stoa(addr);
while (*cq != '\0')
*cp++ = *cq++;
ctl_putdata(buffer, (unsigned)( cp - buffer ), 0);
@@ -1144,7 +1146,6 @@ ctl_putarray(
register const char *cq;
char buffer[200];
int i;
-
cp = buffer;
cq = tag;
while (*cq != '\0')
@@ -1171,9 +1172,11 @@ ctl_putsys(
)
{
l_fp tmp;
-#ifdef HAVE_UNAME
char str[256];
-#endif
+#ifdef OPENSSL
+ struct cert_info *cp;
+ char cbuf[256];
+#endif /* OPENSSL */
switch (varid) {
@@ -1200,8 +1203,8 @@ ctl_putsys(
break;
case CS_REFID:
- if (sys_stratum > 1)
- ctl_putadr(sys_var[CS_REFID].text, sys_refid);
+ if (sys_stratum > 1 && sys_stratum < STRATUM_UNSPEC)
+ ctl_putadr(sys_var[CS_REFID].text, sys_refid, NULL);
else
ctl_putid(sys_var[CS_REFID].text,
(char *)&sys_refid);
@@ -1259,8 +1262,7 @@ ctl_putsys(
ctl_putstr(sys_var[CS_SYSTEM].text, str_system,
sizeof(str_system) - 1);
#else
- (void)strcpy(str, utsnamebuf.sysname);
- (void)strcat(str, utsnamebuf.release);
+ sprintf(str, "%s/%s", utsnamebuf.sysname, utsnamebuf.release);
ctl_putstr(sys_var[CS_SYSTEM].text, str, strlen(str));
#endif /* HAVE_UNAME */
break;
@@ -1338,37 +1340,50 @@ ctl_putsys(
}
break;
-#ifdef PUBKEY
+#ifdef OPENSSL
case CS_FLAGS:
- if (crypto_flags)
- ctl_puthex(sys_var[CS_FLAGS].text,
- crypto_flags);
+ if (crypto_flags) {
+ ctl_puthex(sys_var[CS_FLAGS].text, crypto_flags);
+ }
+ break;
+
+ case CS_DIGEST:
+ if (crypto_flags) {
+ const EVP_MD *dp;
+
+ dp = EVP_get_digestbynid(crypto_flags >> 16);
+ strcpy(str, OBJ_nid2ln(EVP_MD_pkey_type(dp)));
+ ctl_putstr(sys_var[CS_DIGEST].text, str,
+ strlen(str));
+ }
break;
case CS_HOST:
- ctl_putstr(sys_var[CS_HOST].text, sys_hostname,
- strlen(sys_hostname));
- if (host.fstamp != 0)
- ctl_putuint(sys_var[CS_PUBLIC].text,
- ntohl(host.fstamp));
+ if (sys_hostname != NULL)
+ ctl_putstr(sys_var[CS_HOST].text, sys_hostname,
+ strlen(sys_hostname));
break;
case CS_CERTIF:
- if (certif.fstamp != 0)
- ctl_putuint(sys_var[CS_CERTIF].text,
- ntohl(certif.fstamp));
+ for (cp = cinfo; cp != NULL; cp = cp->link) {
+ sprintf(cbuf, "%s %s 0x%x %u", cp->subject,
+ cp->issuer, cp->flags,
+ ntohl(cp->cert.fstamp));
+ ctl_putstr(sys_var[CS_CERTIF].text, cbuf,
+ strlen(cbuf));
+ }
break;
- case CS_DHPARAMS:
- if (dhparam.fstamp != 0)
- ctl_putuint(sys_var[CS_DHPARAMS].text,
- ntohl(dhparam.fstamp));
+ case CS_PUBLIC:
+ if (hostval.fstamp != 0)
+ ctl_putuint(sys_var[CS_PUBLIC].text,
+ ntohl(hostval.fstamp));
break;
case CS_REVTIME:
- if (host.tstamp != 0)
+ if (hostval.tstamp != 0)
ctl_putuint(sys_var[CS_REVTIME].text,
- ntohl(host.tstamp));
+ ntohl(hostval.tstamp));
break;
case CS_LEAPTAB:
@@ -1378,7 +1393,7 @@ ctl_putsys(
if (sys_tai != 0)
ctl_putuint(sys_var[CS_TAI].text, sys_tai);
break;
-#endif /* PUBKEY */
+#endif /* OPENSSL */
}
}
@@ -1392,6 +1407,11 @@ ctl_putpeer(
struct peer *peer
)
{
+#ifdef OPENSSL
+ char str[256];
+ struct autokey *ap;
+#endif /* OPENSSL */
+
switch (varid) {
case CP_CONFIG:
@@ -1410,24 +1430,24 @@ ctl_putpeer(
break;
case CP_SRCADR:
- ctl_putadr(peer_var[CP_SRCADR].text,
- peer->srcadr.sin_addr.s_addr);
+ ctl_putadr(peer_var[CP_SRCADR].text, 0,
+ &peer->srcadr);
break;
case CP_SRCPORT:
ctl_putuint(peer_var[CP_SRCPORT].text,
- ntohs(peer->srcadr.sin_port));
+ ntohs(((struct sockaddr_in*)&peer->srcadr)->sin_port));
break;
case CP_DSTADR:
- ctl_putadr(peer_var[CP_DSTADR].text,
- peer->dstadr->sin.sin_addr.s_addr);
+ ctl_putadr(peer_var[CP_DSTADR].text, 0,
+ &(peer->dstadr->sin));
break;
case CP_DSTPORT:
ctl_putuint(peer_var[CP_DSTPORT].text,
(u_long)(peer->dstadr ?
- ntohs(peer->dstadr->sin.sin_port) : 0));
+ ntohs(((struct sockaddr_in*)&peer->dstadr->sin)->sin_port) : 0));
break;
case CP_LEAP:
@@ -1466,16 +1486,22 @@ ctl_putpeer(
break;
case CP_REFID:
- if (peer->stratum > 1) {
- if (peer->flags & FLAG_REFCLOCK)
- ctl_putadr(peer_var[CP_REFID].text,
- peer->srcadr.sin_addr.s_addr);
+ if (peer->flags & FLAG_REFCLOCK) {
+ if (peer->stratum > 0 && peer->stratum <
+ STRATUM_UNSPEC)
+ ctl_putadr(peer_var[CP_REFID].text,
+ peer->refid, NULL);
else
- ctl_putadr(peer_var[CP_REFID].text,
- peer->refid);
+ ctl_putid(peer_var[CP_REFID].text,
+ (char *)&peer->refid);
} else {
- ctl_putid(peer_var[CP_REFID].text,
- (char *)&peer->refid);
+ if (peer->stratum > 1 && peer->stratum <
+ STRATUM_UNSPEC)
+ ctl_putadr(peer_var[CP_REFID].text,
+ peer->refid, NULL);
+ else
+ ctl_putid(peer_var[CP_REFID].text,
+ (char *)&peer->refid);
}
break;
@@ -1504,21 +1530,17 @@ ctl_putpeer(
break;
case CP_TTL:
- if (!(peer->cast_flags & MDF_ACAST))
- break;
- ctl_putint(peer_var[CP_TTL].text, peer->ttl);
- break;
-
- case CP_TTLMAX:
- if (!(peer->cast_flags & (MDF_MCAST | MDF_ACAST)))
- break;
- ctl_putint(peer_var[CP_TTLMAX].text, peer->ttlmax);
+ ctl_putint(peer_var[CP_TTL].text, sys_ttl[peer->ttl]);
break;
case CP_VALID:
ctl_putuint(peer_var[CP_VALID].text, peer->unreach);
break;
+ case CP_RANK:
+ ctl_putuint(peer_var[CP_RANK].text, peer->rank);
+ break;
+
case CP_TIMER:
ctl_putuint(peer_var[CP_TIMER].text,
peer->nextdate - current_time);
@@ -1612,47 +1634,44 @@ ctl_putpeer(
ctl_putdata(buf, (unsigned)(s - buf), 0);
}
break;
-#ifdef PUBKEY
+#ifdef OPENSSL
case CP_FLAGS:
if (peer->crypto)
ctl_puthex(peer_var[CP_FLAGS].text, peer->crypto);
break;
- case CP_HOST:
- if (peer->keystr != NULL)
- ctl_putstr(peer_var[CP_HOST].text, peer->keystr,
- strlen(peer->keystr));
- if (peer->pubkey.fstamp != 0)
- ctl_putuint(peer_var[CP_PUBLIC].text,
- peer->pubkey.fstamp);
+ case CP_DIGEST:
+ if (peer->crypto) {
+ const EVP_MD *dp;
+
+ dp = EVP_get_digestbynid(peer->crypto >> 16);
+ strcpy(str, OBJ_nid2ln(EVP_MD_pkey_type(dp)));
+ ctl_putstr(peer_var[CP_DIGEST].text, str,
+ strlen(str));
+ }
break;
- case CP_CERTIF:
- if (peer->certif.fstamp != 0)
- ctl_putuint(peer_var[CP_CERTIF].text,
- peer->certif.fstamp);
+ case CP_HOST:
+ if (peer->subject != NULL)
+ ctl_putstr(peer_var[CP_HOST].text, peer->subject,
+ strlen(peer->subject));
break;
- case CP_SESKEY:
- if (peer->pcookie.key != 0)
- ctl_puthex(peer_var[CP_SESKEY].text,
- peer->pcookie.key);
- if (peer->hcookie != 0)
- ctl_puthex(peer_var[CP_SASKEY].text,
- peer->hcookie);
+ case CP_IDENT:
+ if (peer->issuer != NULL)
+ ctl_putstr(peer_var[CP_IDENT].text, peer->issuer,
+ strlen(peer->issuer));
break;
case CP_INITSEQ:
- if (peer->recauto.key == 0)
+ if ((ap = (struct autokey *)peer->recval.ptr) == NULL)
break;
- ctl_putint(peer_var[CP_INITSEQ].text,
- peer->recauto.seq);
- ctl_puthex(peer_var[CP_INITKEY].text,
- peer->recauto.key);
+ ctl_putint(peer_var[CP_INITSEQ].text, ap->seq);
+ ctl_puthex(peer_var[CP_INITKEY].text, ap->key);
ctl_putuint(peer_var[CP_INITTSP].text,
- peer->recauto.tstamp);
+ ntohl(peer->recval.tstamp));
break;
-#endif /* PUBKEY */
+#endif /* OPENSSL */
}
}
@@ -1722,7 +1741,7 @@ ctl_putclock(
if (mustput || (clock_stat->haveflags & CLK_HAVEVAL2)) {
if (clock_stat->fudgeval1 > 1)
ctl_putadr(clock_var[CC_FUDGEVAL2].text,
- (u_int32)clock_stat->fudgeval2);
+ (u_int32)clock_stat->fudgeval2, NULL);
else
ctl_putid(clock_var[CC_FUDGEVAL2].text,
(char *)&clock_stat->fudgeval2);
@@ -1872,20 +1891,21 @@ ctl_getitem(
if (*cp == '=') {
cp++;
tp = buf;
- while (cp < reqend && isspace((int)*cp))
+ while (cp < reqend && isspace((unsigned char)*cp))
cp++;
while (cp < reqend && *cp != ',') {
*tp++ = *cp++;
- if (tp >= buf + sizeof(buf))
+ if (tp >= buf + sizeof(buf))
return (0);
+ }
}
if (cp < reqend)
cp++;
*tp-- = '\0';
- while (tp > buf) {
- *tp-- = '\0';
+ while (tp >= buf) {
if (!isspace((unsigned char)(*tp)))
break;
+ *tp-- = '\0';
}
reqpt = cp;
*data = buf;
@@ -2128,7 +2148,7 @@ write_variables(
register struct ctl_var *v;
register int ext_var;
char *valuep;
- long val;
+ long val = 0;
/*
* If he's trying to write into a peer tell him no way
@@ -2432,7 +2452,7 @@ unset_trap(
*/
int
ctlsettrap(
- struct sockaddr_in *raddr,
+ struct sockaddr_storage *raddr,
struct interface *linter,
int traptype,
int version
@@ -2537,7 +2557,7 @@ ctlsettrap(
tptouse->tr_sequence = 1;
tptouse->tr_addr = *raddr;
tptouse->tr_localaddr = linter;
- tptouse->tr_version = version;
+ tptouse->tr_version = (u_char) version;
tptouse->tr_flags = TRAP_INUSE;
if (traptype == TRAP_TYPE_CONFIG)
tptouse->tr_flags |= TRAP_CONFIGURED;
@@ -2553,7 +2573,7 @@ ctlsettrap(
*/
int
ctlclrtrap(
- struct sockaddr_in *raddr,
+ struct sockaddr_storage *raddr,
struct interface *linter,
int traptype
)
@@ -2578,18 +2598,18 @@ ctlclrtrap(
*/
static struct ctl_trap *
ctlfindtrap(
- struct sockaddr_in *raddr,
+ struct sockaddr_storage *raddr,
struct interface *linter
)
{
register struct ctl_trap *tp;
for (tp = ctl_trap; tp < &ctl_trap[CTL_MAXTRAPS]; tp++) {
- if (tp->tr_flags & TRAP_INUSE && NSRCADR(raddr) ==
- NSRCADR(&tp->tr_addr) && NSRCPORT(raddr) ==
- NSRCPORT(&tp->tr_addr) && linter ==
- tp->tr_localaddr)
- return (tp);
+ if ((tp->tr_flags & TRAP_INUSE)
+ && (NSRCPORT(raddr) == NSRCPORT(&tp->tr_addr))
+ && SOCKCMP(raddr, &tp->tr_addr)
+ && (linter == tp->tr_localaddr) )
+ return (tp);
}
return (struct ctl_trap *)NULL;
}
@@ -2610,7 +2630,7 @@ report_event(
* Record error code in proper spots, but have mercy on the
* log file.
*/
- if (!(err & PEER_EVENT)) {
+ if (!(err & (PEER_EVENT | CRPT_EVENT))) {
if (ctl_sys_num_events < CTL_SYS_MAXEVENTS)
ctl_sys_num_events++;
if (ctl_sys_last_event != (u_char)err) {
@@ -2632,10 +2652,10 @@ report_event(
#ifdef REFCLOCK
if (ISREFCLOCKADR(&peer->srcadr))
- src = refnumtoa(peer->srcadr.sin_addr.s_addr);
+ src = refnumtoa(&peer->srcadr);
else
#endif
- src = ntoa(&peer->srcadr);
+ src = stoa(&peer->srcadr);
peer->last_event = (u_char)(err & ~PEER_EVENT);
if (peer->num_events < CTL_PEER_MAXEVENTS)
@@ -2688,10 +2708,10 @@ report_event(
* variables. Don't send crypto strings.
*/
for (i = 1; i <= CS_MAXCODE; i++) {
-#ifdef PUBKEY
+#ifdef OPENSSL
if (i > CS_VARLIST)
continue;
-#endif /* PUBKEY */
+#endif /* OPENSSL */
ctl_putsys(i);
}
#ifdef REFCLOCK
@@ -2717,7 +2737,7 @@ report_event(
strlen(kv->text), 0);
free_varlist(clock_stat.kv_list);
}
-#endif /*REFCLOCK*/
+#endif /* REFCLOCK */
} else {
rpkt.associd = htons(peer->associd);
rpkt.status = htons(ctlpeerstatus(peer));
@@ -2725,12 +2745,13 @@ report_event(
/*
* Dump it all. Later, maybe less.
*/
- for (i = 1; i <= CP_MAXCODE; i++)
-#ifdef PUBKEY
+ for (i = 1; i <= CP_MAXCODE; i++) {
+#ifdef OPENSSL
if (i > CP_VARLIST)
continue;
-#endif /* PUBKEY */
+#endif /* OPENSSL */
ctl_putpeer(i, peer);
+ }
#ifdef REFCLOCK
/*
* for clock exception events: add clock variables to
@@ -2756,7 +2777,7 @@ report_event(
strlen(kv->text), 0);
free_varlist(clock_stat.kv_list);
}
-#endif /*REFCLOCK*/
+#endif /* REFCLOCK */
}
/*
@@ -2810,7 +2831,7 @@ char *
add_var(
struct ctl_var **kv,
u_long size,
- int def
+ u_short def
)
{
register u_long c;
@@ -2839,7 +2860,7 @@ set_var(
struct ctl_var **kv,
const char *data,
u_long size,
- int def
+ u_short def
)
{
register struct ctl_var *k;
@@ -2850,7 +2871,8 @@ set_var(
if (!data || !size)
return;
- if ((k = *kv)) {
+ k = *kv;
+ if (k != NULL) {
while (!(k->flags & EOV)) {
s = data;
t = k->text;
@@ -2885,7 +2907,7 @@ void
set_sys_var(
char *data,
u_long size,
- int def
+ u_short def
)
{
set_var(&ext_sys_var, data, size, def);
OpenPOWER on IntegriCloud