We used to remove the trailing zeros in FUSE readlink replies, but

it seems it does not always happen. Just remove them if present.
This commit is contained in:
manu 2014-08-29 04:58:40 +00:00
parent cb87482f69
commit 38582b4fe4
1 changed files with 8 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: ops.c,v 1.69 2014/08/19 15:29:14 manu Exp $ */
/* $NetBSD: ops.c,v 1.70 2014/08/29 04:58:40 manu Exp $ */
/*-
* Copyright (c) 2010-2011 Emmanuel Dreyfus. All rights reserved.
@ -2633,12 +2633,16 @@ perfuse_node_readlink(struct puffs_usermount *pu, puffs_cookie_t opc,
if (len == 0)
DERRX(EX_PROTOCOL, "path len = %zd too short", len);
(void)memcpy(linkname, _GET_OUTPAYLOAD(ps, pm, char *), len);
/*
* FUSE filesystems return a NUL terminated string, we
* do not want to trailing \0
* do not want the trailing \0
*/
*linklen = len - 1;
(void)memcpy(linkname, _GET_OUTPAYLOAD(ps, pm, char *), len);
while (len > 0 && linkname[len - 1] == '\0')
len--;
*linklen = len;
ps->ps_destroy_msg(pm);
error = 0;