[klibc] [PATCH 1/7] ln: Check snprintf() return values
maximilian attems
max at stro.at
Tue Jul 5 11:06:26 PDT 2011
Add some semi-useful error message, as printing the failing dir or file
seems not really advisable after that error.
Signed-off-by: maximilian attems <max at stro.at>
---
usr/utils/ln.c | 20 +++++++++++++++-----
1 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/usr/utils/ln.c b/usr/utils/ln.c
index e826eb8..257b33f 100644
--- a/usr/utils/ln.c
+++ b/usr/utils/ln.c
@@ -9,7 +9,7 @@
int main(int argc, char *argv[])
{
- int c, s, f;
+ int c, s, f, len;
char *p;
struct stat sb;
@@ -56,10 +56,20 @@ int main(int argc, char *argv[])
p = strrchr(argv[c], '/');
p++;
- if (S_ISDIR(sb.st_mode))
- snprintf(target, PATH_MAX, "%s/%s", argv[argc - 1], p);
- else
- snprintf(target, PATH_MAX, "%s", argv[argc - 1]);
+ if (S_ISDIR(sb.st_mode)) {
+ len = snprintf(target, PATH_MAX, "%s/%s",
+ argv[argc - 1], p);
+ if (len >= PATH_MAX) {
+ fprintf(stderr, "snprintf directory failed");
+ return 1;
+ }
+ } else {
+ len = snprintf(target, PATH_MAX, "%s", argv[argc - 1]);
+ if (len >= PATH_MAX) {
+ fprintf(stderr, "snprintf file failed");
+ return -1;
+ }
+ }
if (f)
unlink(target);
--
1.7.5.4
More information about the klibc
mailing list