changeset 839:0d9a3d4188c3

2006-10-31 Brian Masney <masneyb@gftp.org> WARNING: The CVS version of gFTP is currently broken, especially for international users. This will be fixed in a few days. * lib/sshv2.c (sshv2_add_string_to_buf) - added length argument to this function.
author masneyb
date Wed, 01 Nov 2006 02:31:06 +0000
parents 57aad6d4b304
children dd83cd01dc30
files ChangeLog lib/sshv2.c
diffstat 2 files changed, 22 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Nov 01 02:05:25 2006 +0000
+++ b/ChangeLog	Wed Nov 01 02:31:06 2006 +0000
@@ -2,6 +2,9 @@
 	WARNING: The CVS version of gFTP is currently broken, especially for
 	international users. This will be fixed in a few days.
 
+	* lib/sshv2.c (sshv2_add_string_to_buf) - added length argument to
+	this function.
+
 	* lib/gftp.h lib/local.c lib/misc.c lib/protocols.c lib/rfc959.c
 	src/gtk/misc-gtk.c src/text/gftp-text.c - added length argument to
 	gftp_string_from_utf8() and gftp_string_to_utf8()
@@ -3663,7 +3666,7 @@
 
 	* cvsclean - added this script
 
-	* *.[ch] - added $Id: ChangeLog,v 1.488 2006/11/01 02:05:05 masneyb Exp $ tags
+	* *.[ch] - added $Id: ChangeLog,v 1.489 2006/11/01 02:31:05 masneyb Exp $ tags
 
 	* debian/* - updated files from Debian maintainer
 
--- a/lib/sshv2.c	Wed Nov 01 02:05:25 2006 +0000
+++ b/lib/sshv2.c	Wed Nov 01 02:31:06 2006 +0000
@@ -157,13 +157,13 @@
 
 
 static void
-sshv2_add_string_to_buf (char *buf, const char *str)
+sshv2_add_string_to_buf (char *buf, const char *str, size_t len)
 {
   guint32 num;
 
   num = htonl (strlen (str));
   memcpy (buf, &num, 4);
-  strcpy (buf + 4, str);
+  memcpy (buf + 4, str, len);
 }
 
 
@@ -179,7 +179,7 @@
       pathlen = strlen (path);
       *len += pathlen + 8;
       ret = sshv2_initialize_string (request, *len);
-      sshv2_add_string_to_buf (ret + 4, path);
+      sshv2_add_string_to_buf (ret + 4, path, pathlen);
     }
   else
     {
@@ -187,7 +187,7 @@
       pathlen = strlen (tempstr);
       *len += pathlen + 8;
       ret = sshv2_initialize_string (request, *len);
-      sshv2_add_string_to_buf (ret + 4, tempstr);
+      sshv2_add_string_to_buf (ret + 4, tempstr, pathlen);
       g_free (tempstr);
     }
 
@@ -959,7 +959,7 @@
 {
   sshv2_message message;
   char *tempstr, *dir;
-  size_t len;
+  size_t msglen, pathlen;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
@@ -970,11 +970,12 @@
   else
     dir = request->directory;
 
-  len = strlen (dir) + 8;
-  tempstr = sshv2_initialize_string (request, len);
-  sshv2_add_string_to_buf (tempstr + 4, dir);
+  pathlen = strlen (dir);
+  msglen = pathlen + 8;
+  tempstr = sshv2_initialize_string (request, msglen);
+  sshv2_add_string_to_buf (tempstr + 4, dir, pathlen);
 
-  ret = sshv2_send_command (request, SSH_FXP_REALPATH, tempstr, len);
+  ret = sshv2_send_command (request, SSH_FXP_REALPATH, tempstr, msglen);
 
   g_free (tempstr);
   if (ret < 0)
@@ -1189,10 +1190,10 @@
 static int
 sshv2_list_files (gftp_request * request)
 {
+  size_t msglen, pathlen;
   sshv2_params * params;
   sshv2_message message;
   char *tempstr;
-  size_t len;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
@@ -1204,11 +1205,12 @@
   request->logging_function (gftp_logging_misc, request,
 			     _("Retrieving directory listing...\n"));
 
-  len = strlen (request->directory) + 8;
-  tempstr = sshv2_initialize_string (request, len);
-  sshv2_add_string_to_buf (tempstr + 4, request->directory);
+  pathlen = strlen (request->directory);
+  msglen = pathlen + 8;
+  tempstr = sshv2_initialize_string (request, msglen);
+  sshv2_add_string_to_buf (tempstr + 4, request->directory, pathlen);
 
-  ret = sshv2_send_command (request, SSH_FXP_OPENDIR, tempstr, len);
+  ret = sshv2_send_command (request, SSH_FXP_OPENDIR, tempstr, msglen);
 
   g_free (tempstr);
   if (ret < 0)
@@ -1624,8 +1626,8 @@
 
   len = oldlen + newlen + 12;
   tempstr = sshv2_initialize_string (request, len);
-  sshv2_add_string_to_buf (tempstr + 4, oldstr);
-  sshv2_add_string_to_buf (tempstr + 8 + oldlen, newstr);
+  sshv2_add_string_to_buf (tempstr + 4, oldstr, oldlen);
+  sshv2_add_string_to_buf (tempstr + 8 + oldlen, newstr, newlen);
 
   g_free (oldstr);
   g_free (newstr);