@@ -356,23 +356,23 @@ static int library_install(const char *src, const char *lib)
356
356
char * q , * clibdir ;
357
357
int r , ret = 0 ;
358
358
359
- p = strdup (lib );
360
-
361
- r = dracut_install (p , p , false, false, true);
359
+ r = dracut_install (lib , lib , false, false, true);
362
360
if (r != 0 )
363
- log_error ("ERROR: failed to install '%s' for '%s'" , p , src );
361
+ log_error ("ERROR: failed to install '%s' for '%s'" , lib , src );
364
362
else
365
- log_debug ("Lib install: '%s'" , p );
363
+ log_debug ("Lib install: '%s'" , lib );
366
364
ret += r ;
367
365
368
366
/* also install lib.so for lib.so.* files */
369
- q = strstr (p , ".so." );
367
+ q = strstr (lib , ".so." );
370
368
if (q ) {
371
- q [ 3 ] = '\0' ;
369
+ p = strndup ( lib , q - lib + 3 ) ;
372
370
373
371
/* ignore errors for base lib symlink */
374
372
if (dracut_install (p , p , false, false, true) == 0 )
375
373
log_debug ("Lib install: '%s'" , p );
374
+
375
+ free (p );
376
376
}
377
377
378
378
/* Also try to install the same library from one directory above
@@ -384,7 +384,6 @@ static int library_install(const char *src, const char *lib)
384
384
libc.so.6 (libc6,64bit, OS ABI: Linux 2.6.32) => /lib64/libc.so.6
385
385
*/
386
386
387
- free (p );
388
387
p = strdup (lib );
389
388
390
389
pdir = dirname_malloc (p );
@@ -752,25 +751,24 @@ static int dracut_install(const char *orig_src, const char *orig_dst, bool isdir
752
751
mode_t src_mode = 0 ;
753
752
bool dst_exists = true;
754
753
char * i = NULL ;
755
- _cleanup_free_ char * src ;
756
- _cleanup_free_ char * dst ;
754
+ const char * src , * dst ;
757
755
758
756
if (sysrootdirlen ) {
759
757
if (strncmp (orig_src , sysrootdir , sysrootdirlen ) == 0 ) {
760
- src = strdup ( orig_src + sysrootdirlen ) ;
758
+ src = orig_src + sysrootdirlen ;
761
759
fullsrcpath = strdup (orig_src );
762
760
} else {
763
- src = strdup ( orig_src ) ;
761
+ src = orig_src ;
764
762
_asprintf (& fullsrcpath , "%s%s" , sysrootdir , src );
765
763
}
766
764
if (strncmp (orig_dst , sysrootdir , sysrootdirlen ) == 0 )
767
- dst = strdup ( orig_dst + sysrootdirlen ) ;
765
+ dst = orig_dst + sysrootdirlen ;
768
766
else
769
- dst = strdup ( orig_dst ) ;
767
+ dst = orig_dst ;
770
768
} else {
771
- src = strdup ( orig_src ) ;
769
+ src = orig_src ;
772
770
fullsrcpath = strdup (src );
773
- dst = strdup ( orig_dst ) ;
771
+ dst = orig_dst ;
774
772
}
775
773
776
774
log_debug ("dracut_install('%s', '%s', %d, %d, %d)" , src , dst , isdir , resolvedeps , hashdst );
@@ -1335,8 +1333,7 @@ static int install_all(int argc, char **argv)
1335
1333
1336
1334
} else {
1337
1335
if (strchr (argv [i ], '*' ) == NULL ) {
1338
- _cleanup_free_ char * dest = strdup (argv [i ]);
1339
- ret = dracut_install (argv [i ], dest , arg_createdir , arg_resolvedeps , true);
1336
+ ret = dracut_install (argv [i ], argv [i ], arg_createdir , arg_resolvedeps , true);
1340
1337
} else {
1341
1338
_cleanup_free_ char * realsrc = NULL ;
1342
1339
_cleanup_globfree_ glob_t globbuf ;
@@ -1348,11 +1345,9 @@ static int install_all(int argc, char **argv)
1348
1345
size_t j ;
1349
1346
1350
1347
for (j = 0 ; j < globbuf .gl_pathc ; j ++ ) {
1351
- char * dest = strdup (globbuf .gl_pathv [j ] + sysrootdirlen );
1352
- ret |=
1353
- dracut_install (globbuf .gl_pathv [j ] + sysrootdirlen , dest ,
1354
- arg_createdir , arg_resolvedeps , true);
1355
- free (dest );
1348
+ ret |= dracut_install (globbuf .gl_pathv [j ] + sysrootdirlen ,
1349
+ globbuf .gl_pathv [j ] + sysrootdirlen ,
1350
+ arg_createdir , arg_resolvedeps , true);
1356
1351
}
1357
1352
}
1358
1353
}
0 commit comments