xfs
[Top] [All Lists]

[PATCH] xfsdump: fix bug restricting -f pathname length

To: xfs@xxxxxxxxxxx
Subject: [PATCH] xfsdump: fix bug restricting -f pathname length
From: Bill Kendall <wkendall@xxxxxxx>
Date: Thu, 24 Feb 2011 12:40:50 -0600
Cc: Bill Kendall <wkendall@xxxxxxx>
A temporary buffer storing the dump filename (-f) is smaller than
the otherwise allowed pathname length. This buffer is used to
extract the pathname from additional parameters specified as part
of the -f argument. As these parameters are an undocumented and
unused extension of the -f argument, simply remove this code.
Note that drive_alloc() always dups the given pathname, so
'optarg' is passed directly.

Signed-off-by: Bill Kendall <wkendall@xxxxxxx>
---
 common/drive.c |   18 +-----------------
 1 files changed, 1 insertions(+), 17 deletions(-)

diff --git a/common/drive.c b/common/drive.c
index f184afa..227fecd 100644
--- a/common/drive.c
+++ b/common/drive.c
@@ -137,10 +137,6 @@ drive_init1( int argc, char *argv[ ], bool_t 
singlethreaded )
        opterr = 0;
        driveix = 0;
        while ( ( c = getopt( argc, argv, GETOPT_CMDSTRING )) != EOF ) {
-               char optarray[100];
-               char *devname;
-               char *token;
-
                switch ( c ) {
                case GETOPT_DUMPDEST:
                        if ( ! optarg || optarg[ 0 ] == '-' ) {
@@ -151,21 +147,9 @@ drive_init1( int argc, char *argv[ ], bool_t 
singlethreaded )
                                return BOOL_FALSE;
                        }
 
-                       /* remove the device name from the rest of the
-                        * parameter string. note that strdup malloc()s
-                        * a string; important since optarray is an auto.
-                        */
-                       ASSERT( strlen( optarg ) < sizeof( optarray ));
-                       strncpy( optarray, optarg, sizeof( optarray ));
-                       optarray[ sizeof( optarray ) - 1 ] = 0;
-                       if ( ( token = strtok( optarray, "," )) == NULL ) {
-                               token = optarray;
-                       }
-                       devname = strdup( token );
-
                        /* allocate a drive descriptor
                         */
-                       drivepp[ driveix ] = drive_alloc( devname, driveix );
+                       drivepp[ driveix ] = drive_alloc( optarg, driveix );
                        driveix++;
                        break;
                }
-- 
1.7.0.4

<Prev in Thread] Current Thread [Next in Thread>