aboutsummaryrefslogtreecommitdiff
path: root/src/libsunrpc/nfs3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsunrpc/nfs3.c')
-rw-r--r--src/libsunrpc/nfs3.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libsunrpc/nfs3.c b/src/libsunrpc/nfs3.c
index ee5f9850..836f0bf2 100644
--- a/src/libsunrpc/nfs3.c
+++ b/src/libsunrpc/nfs3.c
@@ -2938,6 +2938,11 @@ nfs3entrysize(Nfs3Entry *x)
a = 0 + 4 + 8 + sunstringsize(x->name) + 8;
return a;
}
+static int
+sunstringvpack(uchar *a, uchar *ea, uchar **pa, char **s, u32int n)
+{
+ return sunvaropaquepack(a, ea, pa, (uchar**)&s, &n, -1);
+}
int
nfs3entrypack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
{
@@ -2946,7 +2951,7 @@ nfs3entrypack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
one = 1;
if(sunuint1pack(a, ea, &a, &one) < 0) goto Err;
if(sunuint64pack(a, ea, &a, &x->fileid) < 0) goto Err;
- if(sunstringpack(a, ea, &a, &x->name, -1) < 0) goto Err;
+ if(sunstringvpack(a, ea, &a, &x->name, x->namelen) < 0) goto Err;
if(sunuint64pack(a, ea, &a, &x->cookie) < 0) goto Err;
*pa = a;
return 0;
@@ -2963,6 +2968,7 @@ nfs3entryunpack(uchar *a, uchar *ea, uchar **pa, Nfs3Entry *x)
if(sunuint1unpack(a, ea, &a, &one) < 0 || one != 1) goto Err;
if(sunuint64unpack(a, ea, &a, &x->fileid) < 0) goto Err;
if(sunstringunpack(a, ea, &a, &x->name, -1) < 0) goto Err;
+ x->namelen = strlen(x->name);
if(sunuint64unpack(a, ea, &a, &x->cookie) < 0) goto Err;
*pa = a;
return 0;