summaryrefslogtreecommitdiff
path: root/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch')
-rw-r--r--app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch b/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch
new file mode 100644
index 000000000000..7f62eb59d429
--- /dev/null
+++ b/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch
@@ -0,0 +1,48 @@
+Index: pwsafe.cpp
+===================================================================
+RCS file: /cvsroot/pwsafe/pwsafe/pwsafe.cpp,v
+retrieving revision 1.56
+retrieving revision 1.57
+diff -u -r1.56 -r1.57
+--- pwsafe.cpp 30 Sep 2005 10:30:56 -0000 1.56
++++ pwsafe.cpp 12 Aug 2007 12:33:06 -0000 1.57
+@@ -3346,6 +3346,12 @@
+ }
+
+ bufpos += rc;
++ buf[bufpos] = '\0';
++
++ if (rc == 0) {
++ // EOF (ctrl-D)
++ break;
++ }
+
+ if (bufpos == buflen && !strchr(buf,'\n')) {
+ // we needed a bigger buffer
+@@ -3354,6 +3360,7 @@
+ fprintf(stderr, "Error: %s out of memory\n", program_name);
+ memset(buf,0,buflen);
+ free(buf);
++ throw FailEx();
+ }
+
+ memcpy(new_buf, buf, bufpos);
+@@ -3364,9 +3371,15 @@
+ }
+ }
+
+- int len = strchr(buf,'\n') - buf;
+- saved.assign(buf+len+1, bufpos-(len+1));
+- buf[len] = '\0';
++ char* lf = strchr(buf,'\n');
++ if (lf) {
++ // save the rest of the input for later
++ saved.assign(lf+1);
++ *lf = '\0';
++ } else {
++ saved.assign("",0);
++ }
++
+ return buf;
+ }
+ #endif // WITH_READLINE