Apply by doing: cd /usr/src patch -p0 < 018_mopd.patch cd usr.sbin/mopd make obj && make depend && make && make install Index: usr.sbin/mopd/mopd/process.c =================================================================== RCS file: /cvs/src/usr.sbin/mopd/mopd/process.c,v retrieving revision 1.3 diff -u -r1.3 process.c --- usr.sbin/mopd/mopd/process.c 2000/02/20 17:45:34 1.3 +++ usr.sbin/mopd/mopd/process.c 2000/07/05 22:37:29 @@ -1,4 +1,4 @@ -/* $OpenBSD: process.c,v 1.3 2000/02/20 17:45:34 bitblt Exp $ */ +/* $OpenBSD: process.c,v 1.8 2000/07/04 23:46:23 maja Exp $ */ /* * Copyright (c) 1993-95 Mats O Jansson. All rights reserved. @@ -30,7 +30,7 @@ */ #ifndef LINT -static char rcsid[] = "$OpenBSD: process.c,v 1.3 2000/02/20 17:45:34 bitblt Exp $"; +static char rcsid[] = "$OpenBSD: process.c,v 1.8 2000/07/04 23:46:23 maja Exp $"; #endif #include "os.h" @@ -267,7 +267,7 @@ dllist[slot].a_lseek = 0; dllist[slot].count = 0; - if (dllist[slot].dl_bsz >= 1492) + if ((dllist[slot].dl_bsz >= 1492) || (dllist[slot].dl_bsz == 0)) dllist[slot].dl_bsz = 1492; if (dllist[slot].dl_bsz == 1030) /* VS/uVAX 2000 needs this */ dllist[slot].dl_bsz = 1000; @@ -353,7 +353,7 @@ snprintf(line,sizeof(line), "%x:%x:%x:%x:%x:%x Load completed", dst[0],dst[1],dst[2],dst[3],dst[4],dst[5]); - syslog(LOG_INFO, line); + syslog(LOG_INFO, "%s", line); return; } @@ -438,7 +438,7 @@ { u_char tmpc; u_short moplen; - u_char pfile[17], mopcode; + u_char pfile[129], mopcode; char filename[FILENAME_MAX]; char line[100]; int i,nfd,iindex; @@ -487,6 +487,8 @@ rpr_pgty = mopGetChar(pkt,index); /* Program Type */ tmpc = mopGetChar(pkt,index); /* Software ID Len */ + if (tmpc > sizeof(pfile) - 1) + return; for (i = 0; i < tmpc; i++) { pfile[i] = mopGetChar(pkt,index); pfile[i+1] = '\0'; @@ -529,7 +531,7 @@ src[0],src[1],src[2], src[3],src[4],src[5],trans,pfile); } - syslog(LOG_INFO, line); + syslog(LOG_INFO, "%s", line); } else { if ((mopCmpEAddr(dst,ii->eaddr) == 0)) { dl_rpr->ldfd = open(filename, O_RDONLY, 0); @@ -538,7 +540,7 @@ "%x:%x:%x:%x:%x:%x Send me %s", src[0],src[1],src[2], src[3],src[4],src[5],pfile); - syslog(LOG_INFO, line); + syslog(LOG_INFO, "%s", line); } }