aboutsummaryrefslogtreecommitdiff
path: root/tar.c
diff options
context:
space:
mode:
Diffstat (limited to 'tar.c')
-rw-r--r--tar.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/tar.c b/tar.c
index 1b783f0f5..836d127e7 100644
--- a/tar.c
+++ b/tar.c
@@ -824,12 +824,15 @@ writeTarHeader(struct TarBallInfo *tbInfo, const char *fileName, struct stat *st
824 824
825 /* WARNING/NOTICE: I break Hard Links */ 825 /* WARNING/NOTICE: I break Hard Links */
826 if (S_ISLNK(statbuf->st_mode)) { 826 if (S_ISLNK(statbuf->st_mode)) {
827 int link_size=0;
827 char buffer[BUFSIZ]; 828 char buffer[BUFSIZ];
828 header.typeflag = SYMTYPE; 829 header.typeflag = SYMTYPE;
829 if ( readlink(fileName, buffer, sizeof(buffer) - 1) < 0) { 830 link_size = readlink(fileName, buffer, sizeof(buffer) - 1);
831 if ( link_size < 0) {
830 errorMsg("Error reading symlink '%s': %s\n", header.name, strerror(errno)); 832 errorMsg("Error reading symlink '%s': %s\n", header.name, strerror(errno));
831 return ( FALSE); 833 return ( FALSE);
832 } 834 }
835 buffer[link_size] = '\0';
833 strncpy(header.linkname, buffer, sizeof(header.linkname)); 836 strncpy(header.linkname, buffer, sizeof(header.linkname));
834 } else if (S_ISDIR(statbuf->st_mode)) { 837 } else if (S_ISDIR(statbuf->st_mode)) {
835 header.typeflag = DIRTYPE; 838 header.typeflag = DIRTYPE;