Fossil SCM
Handle errors in blob_read_link().
Commit
d43029f6f450fbbea36199e5abdec18972c628fd
Parent
a7bf0e9ba436103…
1 file changed
+5
-5
+5
-5
| --- src/blob.c | ||
| +++ src/blob.c | ||
| @@ -711,21 +711,21 @@ | ||
| 711 | 711 | ** Returns length of destination path. |
| 712 | 712 | ** |
| 713 | 713 | ** On windows, zeros blob and returns 0. |
| 714 | 714 | */ |
| 715 | 715 | int blob_read_link(Blob *pBlob, const char *zFilename){ |
| 716 | + blob_zero(pBlob); | |
| 716 | 717 | #if !defined(_WIN32) |
| 717 | 718 | char zBuf[1024]; |
| 718 | 719 | ssize_t len = readlink(zFilename, zBuf, 1023); |
| 719 | - blob_zero(pBlob); | |
| 720 | - if (len > 0) { | |
| 721 | - zBuf[len] = 0; | |
| 722 | - blob_appendf(pBlob, "%s", zBuf); | |
| 720 | + if( len < 0 ){ | |
| 721 | + fossil_panic("cannot read symbolic link %s", zFilename); | |
| 723 | 722 | } |
| 723 | + zBuf[len] = 0; /* null-terminate */ | |
| 724 | + blob_appendf(pBlob, "%s", zBuf); | |
| 724 | 725 | return len; |
| 725 | 726 | #else |
| 726 | - blob_zero(pBlob); | |
| 727 | 727 | return 0; |
| 728 | 728 | #endif |
| 729 | 729 | } |
| 730 | 730 | |
| 731 | 731 | |
| 732 | 732 |
| --- src/blob.c | |
| +++ src/blob.c | |
| @@ -711,21 +711,21 @@ | |
| 711 | ** Returns length of destination path. |
| 712 | ** |
| 713 | ** On windows, zeros blob and returns 0. |
| 714 | */ |
| 715 | int blob_read_link(Blob *pBlob, const char *zFilename){ |
| 716 | #if !defined(_WIN32) |
| 717 | char zBuf[1024]; |
| 718 | ssize_t len = readlink(zFilename, zBuf, 1023); |
| 719 | blob_zero(pBlob); |
| 720 | if (len > 0) { |
| 721 | zBuf[len] = 0; |
| 722 | blob_appendf(pBlob, "%s", zBuf); |
| 723 | } |
| 724 | return len; |
| 725 | #else |
| 726 | blob_zero(pBlob); |
| 727 | return 0; |
| 728 | #endif |
| 729 | } |
| 730 | |
| 731 | |
| 732 |
| --- src/blob.c | |
| +++ src/blob.c | |
| @@ -711,21 +711,21 @@ | |
| 711 | ** Returns length of destination path. |
| 712 | ** |
| 713 | ** On windows, zeros blob and returns 0. |
| 714 | */ |
| 715 | int blob_read_link(Blob *pBlob, const char *zFilename){ |
| 716 | blob_zero(pBlob); |
| 717 | #if !defined(_WIN32) |
| 718 | char zBuf[1024]; |
| 719 | ssize_t len = readlink(zFilename, zBuf, 1023); |
| 720 | if( len < 0 ){ |
| 721 | fossil_panic("cannot read symbolic link %s", zFilename); |
| 722 | } |
| 723 | zBuf[len] = 0; /* null-terminate */ |
| 724 | blob_appendf(pBlob, "%s", zBuf); |
| 725 | return len; |
| 726 | #else |
| 727 | return 0; |
| 728 | #endif |
| 729 | } |
| 730 | |
| 731 | |
| 732 |