Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/puffs/mount_psshfs Fix chgrp (and don't rely on VNO...



details:   https://anonhg.NetBSD.org/src/rev/5e5dcf8de50a
branches:  trunk
changeset: 750592:5e5dcf8de50a
user:      pooka <pooka%NetBSD.org@localhost>
date:      Thu Jan 07 21:19:45 2010 +0000

description:
Fix chgrp (and don't rely on VNOVAL being -1, however unlikely that
is to be broken).

diffstat:

 usr.sbin/puffs/mount_psshfs/psbuf.c |  27 ++++++++++++++-------------
 1 files changed, 14 insertions(+), 13 deletions(-)

diffs (60 lines):

diff -r 91c822f480f4 -r 5e5dcf8de50a usr.sbin/puffs/mount_psshfs/psbuf.c
--- a/usr.sbin/puffs/mount_psshfs/psbuf.c       Thu Jan 07 21:05:50 2010 +0000
+++ b/usr.sbin/puffs/mount_psshfs/psbuf.c       Thu Jan 07 21:19:45 2010 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: psbuf.c,v 1.16 2010/01/07 21:05:50 pooka Exp $        */
+/*      $NetBSD: psbuf.c,v 1.17 2010/01/07 21:19:45 pooka Exp $        */
 
 /*
  * Copyright (c) 2006-2009  Antti Kantee.  All Rights Reserved.
@@ -27,7 +27,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: psbuf.c,v 1.16 2010/01/07 21:05:50 pooka Exp $");
+__RCSID("$NetBSD: psbuf.c,v 1.17 2010/01/07 21:19:45 pooka Exp $");
 #endif /* !lint */
 
 /*
@@ -260,12 +260,23 @@
        const struct psshfs_ctx *pctx)
 {
        uint32_t flags;
+       int32_t theuid = -1, thegid = -1;
        flags = 0;
 
        if (va->va_size != (uint64_t)PUFFS_VNOVAL)
                flags |= SSH_FILEXFER_ATTR_SIZE;
-       if (va->va_uid != (uid_t)PUFFS_VNOVAL)
+       if (va->va_uid != (uid_t)PUFFS_VNOVAL) {
+               theuid = va->va_uid;
+               if (pctx->domangleuid && theuid == pctx->myuid)
+                       theuid = pctx->mangleuid;
                flags |= SSH_FILEXFER_ATTR_UIDGID;
+       }
+       if (va->va_gid != (gid_t)PUFFS_VNOVAL) {
+               thegid = va->va_gid;
+               if (pctx->domanglegid && thegid == pctx->mygid)
+                       thegid = pctx->manglegid;
+               flags |= SSH_FILEXFER_ATTR_UIDGID;
+       }
        if (va->va_mode != (mode_t)PUFFS_VNOVAL)
                flags |= SSH_FILEXFER_ATTR_PERMISSIONS;
 
@@ -276,16 +287,6 @@
        if (flags & SSH_FILEXFER_ATTR_SIZE)
                psbuf_put_8(pb, va->va_size);
        if (flags & SSH_FILEXFER_ATTR_UIDGID) {
-               uid_t theuid;
-               gid_t thegid;
-
-               theuid = va->va_uid;
-               if (pctx->domangleuid && theuid == pctx->myuid)
-                       theuid = pctx->mangleuid;
-               thegid = va->va_gid;
-               if (pctx->domanglegid && thegid == pctx->mygid)
-                       thegid = pctx->manglegid;
-
                psbuf_put_4(pb, theuid);
                psbuf_put_4(pb, thegid);
        }



Home | Main Index | Thread Index | Old Index