summaryrefslogtreecommitdiff
path: root/net/csync2/files/patch-rsync.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/csync2/files/patch-rsync.c')
-rw-r--r--net/csync2/files/patch-rsync.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/net/csync2/files/patch-rsync.c b/net/csync2/files/patch-rsync.c
new file mode 100644
index 000000000000..c8f47627d5cb
--- /dev/null
+++ b/net/csync2/files/patch-rsync.c
@@ -0,0 +1,30 @@
+--- rsync.c.orig 2015-03-09 14:08:51 UTC
++++ rsync.c
+@@ -41,6 +41,7 @@
+
+ /* This has been taken from rsync:lib/compat.c */
+
++#if 0
+ /**
+ * Like strncpy but does not 0 fill the buffer and always null
+ * terminates.
+@@ -61,6 +62,7 @@ static size_t strlcpy(char *d, const cha
+ }
+ return ret;
+ }
++#endif
+
+ /* splits filepath at the last '/', if any, like so:
+ * dirname basename filepath
+@@ -117,7 +119,10 @@ int mkpath(const char *path, mode_t mode
+ return -1;
+ }
+
+- strlcpy(temp,path,strlen(path));
++ if(strlcpy(temp,path,sizeof(temp))>=sizeof(temp)) {
++ csync_debug(1,"path too long: %s",path);
++ return -1;
++ }
+ csync_debug(1,"mkpath full path: %s",temp);
+ for( remaining=strchr(temp+1, '/'); remaining!=NULL; remaining=strchr(remaining+1, '/') ){
+ *remaining='\0';