[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kio/kio
From:       David Faure <faure () kde ! org>
Date:       2007-09-21 20:17:40
Message-ID: 1190405860.324526.23537.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 715314 by dfaure:

Fix porting errors in KTar due to QByteArray::data() not returning nul-terminated \
data, so use memcpy instead of strcpy. Fix wrong porting hint in kfileitem.h dox


 M  +2 -1      kfileitem.h  
 M  +11 -11    ktar.cpp  


--- trunk/KDE/kdelibs/kio/kio/kfileitem.h #715313:715314
@@ -64,7 +64,8 @@
     /**
      * Null KFileItem. Doesn't represent any file, only exists for convenience.
      *
-     * NOTE KDE 4.0 KFileItem* => KFileItem& conversion: '(KFileItem*)a==0'  maps to \
'(KFileItem)a==KFileItem()' +     * NOTE KDE 4.0 when porting from KFileItem* to \
KFileItem&: +     * '(KFileItem*)a==0'  becomes '(KFileItem)a.isNull()'
      */
     KFileItem();
 
--- trunk/KDE/kdelibs/kio/kio/ktar.cpp #715313:715314
@@ -253,7 +253,7 @@
     // and neither longlink nor \0 terminated (bug:101472)
     name = QFile::decodeName(QByteArray(buffer, 100));
   if (symlink.isEmpty())
-    symlink = QFile::decodeName(QByteArray(buffer + 0x9d, 100));
+      symlink = QFile::decodeName(QByteArray(buffer + 0x9d /*?*/, 100));
 
   return 0x200;
 }
@@ -577,7 +577,7 @@
                        const char * uname, const char * gname ) {
   // mode (as in stpos())
   assert( strlen(mode) == 6 );
-  strcpy( buffer+0x64, mode );
+  memcpy( buffer+0x64, mode, 6 );
   buffer[ 0x6a ] = ' ';
   buffer[ 0x6b ] = '\0';
 
@@ -588,15 +588,15 @@
 
   // size
   QByteArray s = QByteArray::number( size, 8 ); // octal
-  s = s.rightJustified( 11, ' ' );
-  strcpy( buffer + 0x7c, s.data() );
+  s = s.rightJustified( 11, '0' );
+  memcpy( buffer + 0x7c, s.data(), 11 );
   buffer[ 0x87 ] = ' '; // space-terminate (no null after)
 
   // modification time
   s = QByteArray::number( static_cast<qulonglong>(mtime), 8 ); // octal
-  s = s.rightJustified( 11, ' ' );
-  strcpy( buffer + 0x88, s.data() );
-  buffer[ 0x93 ] = ' '; // space-terminate (no null after)
+  s = s.rightJustified( 11, '0' );
+  memcpy( buffer + 0x88, s.data(), 11 );
+  buffer[ 0x93 ] = ' '; // space-terminate (no null after) -- well current tar \
writes a null byte  
   // spaces, replaced by the check sum later
   buffer[ 0x94 ] = 0x20;
@@ -617,7 +617,7 @@
   // type flag (dir, file, link)
   buffer[ 0x9c ] = typeflag;
 
- // magic + version
+  // magic + version
   strcpy( buffer + 0x101, "ustar");
   strcpy( buffer + 0x107, "00" );
 
@@ -631,8 +631,8 @@
   for( uint j = 0; j < 0x200; ++j )
     check += buffer[j];
   s = QByteArray::number( check, 8 ); // octal
-  s = s.rightJustified( 7, ' ' );
-  strcpy( buffer + 0x94, s.data() );
+  s = s.rightJustified( 6, '0' );
+  memcpy( buffer + 0x94, s.constData(), 6 );
 }
 
 void KTar::writeLonglink(char *buffer, const QByteArray &name, char typeflag,
@@ -711,7 +711,7 @@
     memset(buffer+0x9d, 0, 0x200 - 0x9d);
 
     QByteArray permstr = QByteArray::number( (unsigned int)perm, 8 );
-    permstr = permstr.rightJustified(6, ' ');
+    permstr = permstr.rightJustified(6, '0');
     fillBuffer(buffer, permstr, size, mtime, 0x30, uname, gname);
 
     // Write header


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic