Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Jun 2001 16:20:47 -0700 (PDT)
From:      Voradesh Yenbut <yenbut@cs.washington.edu>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   bin/28430: mtree does not correctly compare files when one of which have flags set
Message-ID:  <200106262320.f5QNKli86125@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         28430
>Category:       bin
>Synopsis:       mtree does not correctly compare files when one of which have flags set
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 26 16:30:06 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Voradesh Yenbut
>Release:        4.2BSD
>Organization:
U of Washington
>Environment:
FreeBSD orion.cs.washington.edu 4.2-RELEASE FreeBSD 4.2-RELEASE #1: Mon Dec 18 18:35:55 GMT 2000     root@orion.cs.washington.edu:/usr/src/sys/compile/ORION  i386

>Description:
Mtree does not correctly compare files against their specs if
one of the files has flags such as nodump set.  The files not
having the flags set show errors like the following:

za:     flags ("nodump" is not "none")
za/z:   flags ("nodump" is not "none")
za/z/a: flags ("nodump" is not "none")

>How-To-Repeat:
Running the following commands:
------
rm -rf /tmp/test

mkdir /tmp/test
mkdir /tmp/test/x
mkdir /tmp/test/x/y
mkdir /tmp/test/x/z
touch /tmp/test/x/z/b

touch /tmp/test/y
chflags nodump /tmp/test/y

ln -s /tmp/test/y /tmp/test/x/y/a

rm -rf /tmp/test/za
mkdir /tmp/test/za
mkdir /tmp/test/za/z
touch /tmp/test/za/z/a

mtree -cnxiK sha1digest -p /tmp/test > spec
mtree -xp /tmp/test < spec

>Fix:
The patch below on spec.c corrects the problem.  The patch
on create.c is a patch to what looks like another bug.  It
is unclear what the bug does.

--- spec.c      2001/06/26 21:59:06     1.1
+++ spec.c      2001/06/26 22:13:49
@@ -113,6 +113,7 @@
                        case 's':
                                if (strcmp(p + 1, "set"))
                                        break;
+                               bzero(&ginfo, sizeof(ginfo));
                                set(NULL, &ginfo);
                                continue;
                        case 'u':
--- create.c    2001/06/26 21:00:13     1.1
+++ create.c    2001/06/26 21:08:54
@@ -337,7 +337,7 @@
                        if (FLAGS2IDX(sflags) < MAXFLAGS &&
                            ++f[FLAGS2IDX(sflags)] > maxflags) {
                                saveflags = sflags;
-                               maxflags = u[FLAGS2IDX(sflags)];
+                               maxflags = f[FLAGS2IDX(sflags)];
                        }
                }
        }

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200106262320.f5QNKli86125>