Apply by doing:
       cd /usr/src
       patch -p0 < 006_tftpd.patch

And then rebuild and install tftpd:
       cd usr.sbin/tftpd/
       make obj
       make depend
       make
       make install

Index: usr.sbin/tftpd/tftpd.c
===================================================================
RCS file: /cvs/src/usr.sbin/tftpd/tftpd.c,v
retrieving revision 1.8
diff -p -u -r1.8 tftpd.c
--- usr.sbin/tftpd/tftpd.c      13 Jul 2012 02:31:46 -0000      1.8
+++ usr.sbin/tftpd/tftpd.c      12 Jun 2013 10:24:55 -0000
@@ -168,7 +168,7 @@ void                tftp_end(struct tftp_client *);
void           tftp(struct tftp_client *, struct tftphdr *, size_t);
void           tftp_open(struct tftp_client *, const char *);
void           nak(struct tftp_client *, int);
-void           oack(struct tftp_client *);
+int            oack(struct tftp_client *);
void           oack_done(int, short, void *);

void           sendfile(struct tftp_client *);
@@ -565,7 +565,7 @@ client_alloc()
{
       struct tftp_client *client;

-       client = calloc(sizeof(*client), 1);
+       client = calloc(1, sizeof(*client));
       if (client == NULL)
               return (NULL);

@@ -812,7 +812,7 @@ again:
       client->fgetc = pf->f_getc;
       client->fputc = pf->f_putc;

-       client->options = options = calloc(sizeof(*client->options), NOPT);
+       client->options = options = calloc(NOPT, sizeof(*client->options));
       if (options == NULL) {
               ecode = 100 + ENOMEM;
               goto error;
@@ -876,7 +876,8 @@ tftp_open(struct tftp_client *client, co
               goto error;

       if (client->options) {
-               oack(client);
+               if (oack(client) == -1)
+                       goto error;

               free(client->options);
               client->options = NULL;
@@ -886,7 +887,6 @@ tftp_open(struct tftp_client *client, co
               sendfile(client);

       return;
-
error:
       nak(client, ecode);
}
@@ -1386,7 +1386,7 @@ nak(struct tftp_client *client, int erro
/*
 * Send an oack packet (option acknowledgement).
 */
-void
+int
oack(struct tftp_client *client)
{
       struct opt_client *options = client->options;
@@ -1396,7 +1396,7 @@ oack(struct tftp_client *client)

       tp = (struct tftphdr *)client->buf;
       bp = (char *)tp->th_stuff;
-       size = client->packet_size - 2;
+       size = sizeof(client->buf) - 2;

       tp->th_opcode = htons((u_short)OACK);
       for (i = 0; i < NOPT; i++) {
@@ -1406,14 +1406,14 @@ oack(struct tftp_client *client)
               n = snprintf(bp, size, "%s%c%lld", opt_names[i], '\0',
                   options[i].o_reply);
               if (n == -1 || n >= size) {
-                       lwarn("oack: no buffer space");
+                       lwarnx("oack: no buffer space");
                       goto error;
               }

               bp += n + 1;
               size -= n + 1;
               if (size < 0) {
-                       lwarn("oack: no buffer space");
+                       lwarnx("oack: no buffer space");
                       goto error;
               }
       }
@@ -1436,10 +1436,10 @@ oack(struct tftp_client *client)
                   oack_done, client);

       event_add(&client->sev, &client->tv);
-       return;
+       return (0);

error:
-       client_free(client);
+       return (-1);
}

int