Initialize recm to NULL inside the loop, so that a record length of
NULL will not accidentallly append bogus data (the previous record). Derived from a fix by Matt Dillon in FreeBSD.
This commit is contained in:
parent
7e66d492ee
commit
316b8f10e7
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: nfs_socket.c,v 1.74 2002/05/12 23:04:36 matt Exp $ */
|
||||
/* $NetBSD: nfs_socket.c,v 1.75 2002/08/02 00:09:33 fvdl Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989, 1991, 1993, 1995
|
||||
@ -43,7 +43,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.74 2002/05/12 23:04:36 matt Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.75 2002/08/02 00:09:33 fvdl Exp $");
|
||||
|
||||
#include "fs_nfs.h"
|
||||
#include "opt_nfs.h"
|
||||
@ -2048,7 +2048,7 @@ nfsrv_getstream(slp, waitflag)
|
||||
struct mbuf *m, **mpp;
|
||||
char *cp1, *cp2;
|
||||
int len;
|
||||
struct mbuf *om, *m2, *recm = NULL;
|
||||
struct mbuf *om, *m2, *recm;
|
||||
u_int32_t recmark;
|
||||
|
||||
if (slp->ns_flag & SLP_GETSTREAM)
|
||||
@ -2093,6 +2093,9 @@ nfsrv_getstream(slp, waitflag)
|
||||
|
||||
/*
|
||||
* Now get the record part.
|
||||
*
|
||||
* Note that slp->ns_reclen may be 0. Linux sometimes
|
||||
* generates 0-length records.
|
||||
*/
|
||||
if (slp->ns_cc == slp->ns_reclen) {
|
||||
recm = slp->ns_raw;
|
||||
@ -2101,7 +2104,8 @@ nfsrv_getstream(slp, waitflag)
|
||||
} else if (slp->ns_cc > slp->ns_reclen) {
|
||||
len = 0;
|
||||
m = slp->ns_raw;
|
||||
om = (struct mbuf *)0;
|
||||
recm = om = NULL;
|
||||
|
||||
while (len < slp->ns_reclen) {
|
||||
if ((len + m->m_len) > slp->ns_reclen) {
|
||||
size_t left = slp->ns_reclen - len;
|
||||
|
Loading…
x
Reference in New Issue
Block a user