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);
                       }
               }