Mercurial > gftp.yaz
changeset 525:7262851e3ae8
2004-8-1 Brian Masney <masneyb@gftp.org>
* lib/sshv2.c - treat all integers from the remote server as
unsigned
* src/gtk/delete_dialog.c - fixed memory leak
* src/gtk/chmod_dialog.c src/gtk/delete_dialog.c src/gtk/dnd.c
src/gtk/gftp-gtk.c src/gtk/gftp-gtk.h src/gtk/gtkui.c
src/gtk/menu-items.c src/gtk/transfer.c - added
gftp_gtk_get_list_selection() macro
author | masneyb |
---|---|
date | Sun, 01 Aug 2004 11:03:39 +0000 |
parents | 1f7d97e7c475 |
children | 990088b18285 |
files | ChangeLog lib/sshv2.c src/gtk/chmod_dialog.c src/gtk/delete_dialog.c src/gtk/dnd.c src/gtk/gftp-gtk.c src/gtk/gftp-gtk.h src/gtk/gtkui.c src/gtk/menu-items.c src/gtk/transfer.c |
diffstat | 10 files changed, 115 insertions(+), 94 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Jul 31 12:06:51 2004 +0000 +++ b/ChangeLog Sun Aug 01 11:03:39 2004 +0000 @@ -1,3 +1,14 @@ +2004-8-1 Brian Masney <masneyb@gftp.org> + * lib/sshv2.c - treat all integers from the remote server as + unsigned + + * src/gtk/delete_dialog.c - fixed memory leak + + * src/gtk/chmod_dialog.c src/gtk/delete_dialog.c src/gtk/dnd.c + src/gtk/gftp-gtk.c src/gtk/gftp-gtk.h src/gtk/gtkui.c + src/gtk/menu-items.c src/gtk/transfer.c - added + gftp_gtk_get_list_selection() macro + 2004-7-27 Brian Masney <masneyb@gftp.org> * lib/rfc959.c src/gtk/misc-gtk.c src/gtk/view_dialog.c - fixed more comparsions between signed and unsigned integers @@ -2691,7 +2702,7 @@ * cvsclean - added this script - * *.[ch] - added $Id: ChangeLog,v 1.299 2004/07/28 02:47:24 masneyb Exp $ tags + * *.[ch] - added $Id: ChangeLog,v 1.300 2004/08/01 11:03:38 masneyb Exp $ tags * debian/* - updated files from Debian maintainer
--- a/lib/sshv2.c Sat Jul 31 12:06:51 2004 +0000 +++ b/lib/sshv2.c Sun Aug 01 11:03:39 2004 +0000 @@ -44,17 +44,6 @@ }; -typedef struct sshv2_attribs_tag -{ - gint32 flags; - gint64 size; - gint32 uid; - gint32 gid; - gint32 perm; - gint32 atime; - gint32 mtime; -} sshv2_attribs; - typedef struct sshv2_message_tag { guint32 length; @@ -69,8 +58,8 @@ char handle[SSH_MAX_HANDLE_SIZE + 4], /* We'll encode the ID in here too */ *read_buffer; - gint32 id, - count; + guint32 id, + count; size_t handle_len; sshv2_message message; @@ -78,9 +67,9 @@ dont_log_status : 1; /* For uploading files */ #ifdef G_HAVE_GINT64 - gint64 offset; + guint64 offset; #else - gint32 offset; + guint32 offset; #endif } sshv2_params; @@ -831,23 +820,39 @@ } -static gint32 /* FIXME - return value */ +static int sshv2_buffer_get_int32 (gftp_request * request, sshv2_message * message, - int expected_response) + int expected_response, guint32 * num) { - guint32 ret; + guint32 snum; if (message->end - message->pos < 4) return (sshv2_wrong_response (request, message)); - - memcpy (&ret, message->pos, 4); - ret = ntohl (ret); + + memcpy (&snum, message->pos, 4); + snum = ntohl (snum); message->pos += 4; - if (expected_response >= 0 && ret != expected_response) - return (sshv2_wrong_response (request, message)); + if (expected_response >= 0 && snum != expected_response) + { + switch (snum) + { + case SSH_FX_OK: + case SSH_FX_EOF: + case SSH_FX_NO_SUCH_FILE: + case SSH_FX_PERMISSION_DENIED: + case SSH_FX_FAILURE: + case SSH_FX_OP_UNSUPPORTED: + return (GFTP_ERETRYABLE); + default: + return (sshv2_wrong_response (request, message)); + } + } - return (ret); + if (num != NULL) + *num = snum; + + return (0); } @@ -855,9 +860,9 @@ sshv2_buffer_get_string (gftp_request * request, sshv2_message * message) { char *string; - gint32 len; + guint32 len; - if ((len = sshv2_buffer_get_int32 (request, message, -1)) < 0) + if (sshv2_buffer_get_int32 (request, message, -1, &len) < 0) return (NULL); if (len > SSH_MAX_STRING_SIZE || (message->end - message->pos < len)) @@ -912,7 +917,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, 1)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, 1, NULL)) < 0) return (ret); if ((request->directory = sshv2_buffer_get_string (request, &message)) == NULL) @@ -1162,19 +1167,19 @@ sshv2_decode_file_attributes (gftp_request * request, sshv2_message * message, gftp_file * fle) { - gint32 attrs, hinum, num, count; - int i; + guint32 attrs, hinum, num, count, i; + int ret; - if ((attrs = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (attrs); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &attrs)) < 0) + return (ret); if (attrs & SSH_FILEXFER_ATTR_SIZE) { - if ((hinum = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (hinum); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &hinum)) < 0) + return (ret); - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (num); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &num)) < 0) + return (ret); #if G_HAVE_GINT64 fle->size = (gint64) num | ((gint64) hinum >> 32); @@ -1185,46 +1190,46 @@ if (attrs & SSH_FILEXFER_ATTR_UIDGID) { - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (num); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, NULL)) < 0) + return (ret); - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (num); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, NULL)) < 0) + return (ret); } if (attrs & SSH_FILEXFER_ATTR_PERMISSIONS) { - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (num); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &num)) < 0) + return (ret); fle->st_mode = num; } if (attrs & SSH_FILEXFER_ATTR_ACMODTIME) { - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, message, -1, NULL)) < 0) return (num); - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (num); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &num)) < 0) + return (ret); fle->datetime = num; } if (attrs & SSH_FILEXFER_ATTR_EXTENDED) { - if ((count = sshv2_buffer_get_int32 (request, message, -1)) < 0) - return (GFTP_EFATAL); + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &count)) < 0) + return (ret); for (i=0; i<count; i++) { - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0 || + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &num)) < 0 || message->pos + num + 4 > message->end) return (GFTP_EFATAL); message->pos += num + 4; - if ((num = sshv2_buffer_get_int32 (request, message, -1)) < 0 || + if ((ret = sshv2_buffer_get_int32 (request, message, -1, &num)) < 0 || message->pos + num + 4 > message->end) return (GFTP_EFATAL); @@ -1240,8 +1245,8 @@ sshv2_get_next_file (gftp_request * request, gftp_file * fle, int fd) { guint32 len, longnamelen; + int ret, retsize, iret; sshv2_params *params; - int ret, retsize; char *longname; g_return_val_if_fail (request != NULL, GFTP_EFATAL); @@ -1293,22 +1298,23 @@ if (ret == SSH_FXP_NAME) { params->message.pos = params->message.buffer + 4; - if ((params->count = sshv2_buffer_get_int32 (request, - ¶ms->message, -1)) < 0) - return (params->count); + if ((iret = sshv2_buffer_get_int32 (request, + ¶ms->message, -1, + ¶ms->count)) < 0) + return (iret); } } if (ret == SSH_FXP_NAME) { - if ((len = sshv2_buffer_get_int32 (request, ¶ms->message, -1)) < 0 || + if (sshv2_buffer_get_int32 (request, ¶ms->message, -1, &len) < 0 || params->message.pos + len > params->message.end) return (GFTP_EFATAL); params->message.pos += len; - if ((longnamelen = sshv2_buffer_get_int32 (request, - ¶ms->message, -1)) < 0 || + if (sshv2_buffer_get_int32 (request, ¶ms->message, -1, + &longnamelen) < 0 || params->message.pos + longnamelen > params->message.end) return (GFTP_EFATAL); @@ -1380,8 +1386,8 @@ return (ret); message.pos += 4; - if (sshv2_buffer_get_int32 (request, &message, 1) != 1) - return (GFTP_EFATAL); + if ((ret = sshv2_buffer_get_int32 (request, &message, 1, NULL)) < 0) + return (ret); if ((dir = sshv2_buffer_get_string (request, &message)) == NULL) return (GFTP_EFATAL); @@ -1424,7 +1430,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, NULL)) < 0) return (ret); sshv2_message_free (&message); @@ -1459,7 +1465,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, NULL)) < 0) return (ret); sshv2_message_free (&message); @@ -1502,7 +1508,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, NULL)) < 0) return (ret); sshv2_message_free (&message); @@ -1540,7 +1546,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, NULL)) < 0) return (ret); sshv2_message_free (&message); @@ -1594,7 +1600,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, NULL)) < 0) return (ret); sshv2_message_free (&message); @@ -1637,7 +1643,7 @@ return (ret); message.pos += 4; - if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, NULL)) < 0) return (ret); sshv2_message_free (&message); @@ -1917,15 +1923,11 @@ return (ret); message.pos += 4; - if ((num = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) - return (num); - sshv2_message_free (&message); + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_EOF, + NULL)) < 0) + return (ret); - if (num == SSH_FX_FAILURE) - return (GFTP_ERETRYABLE); - else if (num != SSH_FX_EOF) - return (sshv2_wrong_response (request, &message)); - + sshv2_message_free (&message); return (0); } @@ -1996,15 +1998,15 @@ return (sshv2_wrong_response (request, &message)); message.pos += 4; - if ((num = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK)) < 0) - return (GFTP_ERETRYABLE); - sshv2_message_free (&message); + if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, &num)) < 0) + { + if (num == SSH_FX_EOF) + return (0); - if (num == SSH_FX_EOF) - return (0); - else if (num != SSH_FX_OK) - return (GFTP_ERETRYABLE); + return (ret); + } + sshv2_message_free (&message); params->offset += size; return (size); }
--- a/src/gtk/chmod_dialog.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/chmod_dialog.c Sun Aug 01 11:03:39 2004 +0000 @@ -37,7 +37,7 @@ error = 0; filelist = wdata->files; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; while (templist != NULL) { @@ -278,7 +278,7 @@ if (IS_ONE_SELECTED (wdata)) { filelist = wdata->files; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; templist = get_next_selection (templist, &filelist, &num); tempfle = filelist->data;
--- a/src/gtk/delete_dialog.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/delete_dialog.c Sun Aug 01 11:03:39 2004 +0000 @@ -21,6 +21,13 @@ static const char cvsid[] = "$Id$"; static void +_gftp_gtk_free_del_data (gftp_transfer * transfer, gftp_dialog_data * ddata) +{ + free_tdata (transfer); +} + + +static void yesCB (gftp_transfer * transfer, gftp_dialog_data * ddata) { gftpui_callback_data * cdata; @@ -40,7 +47,7 @@ gftpui_common_run_callback_function (cdata); g_free (cdata); - /* FIXME free_tdata (transfer); */ + _gftp_gtk_free_del_data (transfer, ddata); } @@ -65,7 +72,7 @@ return; MakeYesNoDialog (_("Delete Files/Directories"), tempstr, - yesCB, transfer, NULL, NULL); + yesCB, transfer, _gftp_gtk_free_del_data, transfer); g_free (tempstr); } @@ -89,7 +96,7 @@ transfer->fromwdata = wdata; num = 0; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); filelist = wdata->files; while (templist != NULL) { @@ -112,14 +119,14 @@ ret = gftp_gtk_get_subdirs (transfer, &wdata->tid); - if (!GFTP_IS_CONNECTED (transfer->fromreq)) + gftp_swap_socks (wdata->request, transfer->fromreq); + + if (!GFTP_IS_CONNECTED (wdata->request)) { gftpui_disconnect (wdata); return; } - gftp_swap_socks (wdata->request, transfer->fromreq); - if (!ret) return;
--- a/src/gtk/dnd.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/dnd.c Sun Aug 01 11:03:39 2004 +0000 @@ -151,7 +151,7 @@ return; filelist = wdata->files; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); curpos = 0; while (templist != NULL) {
--- a/src/gtk/gftp-gtk.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/gftp-gtk.c Sun Aug 01 11:03:39 2004 +0000 @@ -600,7 +600,7 @@ &list_dblclk_action); filelist = wdata->files; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; templist = get_next_selection (templist, &filelist, &num); tempfle = (gftp_file *) filelist->data;
--- a/src/gtk/gftp-gtk.h Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/gftp-gtk.h Sun Aug 01 11:03:39 2004 +0000 @@ -35,6 +35,7 @@ #define IS_ONE_SELECTED(wdata) (GTK_CLIST ((wdata)->listbox)->selection && GTK_CLIST ((wdata)->listbox)->selection->next == NULL) #define IS_NONE_SELECTED(wdata) (GTK_CLIST ((wdata)->listbox)->selection == NULL) +#define gftp_gtk_get_list_selection(wdata) (GTK_CLIST ((wdata)->listbox)->selection) #define GFTP_IS_SAME_HOST_START_TRANS(wdata,trequest) \ ((wdata) != NULL && (wdata)->request != NULL && \
--- a/src/gtk/gtkui.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/gtkui.c Sun Aug 01 11:03:39 2004 +0000 @@ -338,7 +338,7 @@ if (!check_status (_("Rename"), wdata, gftpui_common_use_threads (wdata->request), 1, 1, wdata->request->rename != NULL)) return; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; filelist = wdata->files; templist = get_next_selection (templist, &filelist, &num); @@ -418,7 +418,7 @@ wdata->request->chdir != NULL)) return; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; filelist = wdata->files; templist = get_next_selection (templist, &filelist, &num);
--- a/src/gtk/menu-items.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/menu-items.c Sun Aug 01 11:03:39 2004 +0000 @@ -42,7 +42,7 @@ wdata->filespec = g_strdup (edttext); filelist = wdata->files; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; while (templist != NULL) { @@ -164,7 +164,7 @@ wdata->show_selected = 1; filelist = wdata->files; - templist = GTK_CLIST (wdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (wdata); num = 0; while (templist != NULL) {
--- a/src/gtk/transfer.c Sat Jul 31 12:06:51 2004 +0000 +++ b/src/gtk/transfer.c Sun Aug 01 11:03:39 2004 +0000 @@ -110,7 +110,7 @@ transfer->towdata = towdata; num = 0; - templist = GTK_CLIST (fromwdata->listbox)->selection; + templist = gftp_gtk_get_list_selection (fromwdata); filelist = fromwdata->files; while (templist != NULL) {