freebsd-ports/ftp/IglooFTP/files/patch-FTPcommands.h
Andrey Slusar 1373441e92 Fix build on 4.x
Reported by:	pointyhat(kris)
2006-02-10 20:57:15 +00:00

156 lines
4 KiB
C

--- FTPcommands.h.orig Thu Apr 15 17:05:15 1999
+++ FTPcommands.h Sat Feb 4 01:12:52 2006
@@ -14,8 +14,12 @@
*
*/
+#include "defines.h"
+
#define ERROR_REPLY_CODE (FTPctrl->reply[0] == '5' || FTPctrl->reply[0] == '4')
+extern char tmpfile_template[];
+
/* LOGIN */
@@ -282,11 +286,14 @@
char
FTP_LIST (FTP * FTPctrl, char *filename)
{
+ int fd = -1;
char tmp_filename[256];
char list_command[10];
int data_socket = FTP_open_data_connection (FTPctrl);
FILE *local;
+ sprintf(tmp_filename, tmpfile_template);
+
if (FTPctrl->host_type == HOST_VMS)
strcpy (list_command, "LIST");
else
@@ -296,11 +303,18 @@
FTP_TYPE_ASCII (FTPctrl);
- tmpnam (tmp_filename);
if (!FTP_exec_command (FTPctrl, list_command) || ERROR_REPLY_CODE)
return FTP_error (FALSE, "LIST command failed.", "", data_socket);
- local = fopen (tmp_filename, "w");
+ if ((fd = mkstemp (tmp_filename)) == -1 || (local = fdopen (fd, "w")) == NULL)
+ {
+ if (fd != -1) {
+ unlink(tmp_filename);
+ close(fd);
+ }
+ return FTP_error (FALSE, "Unable to create temporary file.", "", 0);
+ }
+
if (!FTP_download (FTPctrl, data_socket, local))
return FTP_error (FALSE, "Unable to retreive directory listing. ", "", data_socket);
--- custom_profiles.h.orig Thu Apr 15 17:05:15 1999
+++ custom_profiles.h Sat Feb 4 00:59:51 2006
@@ -169,6 +169,7 @@
static void
delete_user_prof_from_file (GtkWidget * widget, gpointer data)
{
+ int fd = -1;
const int remove_this_one = (int) GTK_CLIST (clist)->selection->data;
char tmp_filename[256];
char prof_path[1024];
@@ -180,9 +181,21 @@
gtk_widget_destroy (gtk_widget_get_toplevel (widget));
sprintf (prof_path, "%s/%s/%s", home_path, PREFERENCES_PATH, USER_PROF);
- tmpnam (tmp_filename);
+ sprintf (tmp_filename, "%s.%s", prof_path, "tmp.XXXXXXXX");
+
+ if ((fd = mkstemp (tmp_filename)) == -1) {
+ DEBUG("Unable to create temporary file.");
+ return;
+ }
+
+ close (fd);
+
rename (prof_path, tmp_filename);
- file_handle = open (tmp_filename, O_RDONLY, RC_PERM);
+
+ if ((file_handle = open (tmp_filename, O_RDONLY|O_EXCL, RC_PERM)) == -1) {
+ DEBUG("Unable to create temporary file.");
+ return;
+ }
for (index = 0; index < index_total; index++)
{
--- defines.h.orig Thu Apr 15 17:05:15 1999
+++ defines.h Sat Feb 4 01:10:47 2006
@@ -47,6 +47,9 @@
#define SHARE_PATH "/usr/local/src/IglooFTP"
#endif
+#define TMPFILE_FILE "IglooFTP.tmp.XXXXXXXX"
+char tmpfile_template[256];
+
#define PREFERENCES_PATH ".IglooFTP"
#define USER_LAYOUT "user.layout"
--- dirlist.c.orig Thu Apr 15 17:05:14 1999
+++ dirlist.c Fri Feb 3 23:20:24 2006
@@ -1619,6 +1619,7 @@
upload_selection_recursive (void)
{
+ int fd = -1;
GdkColor done_color = GREYCYAN;
GdkColormap *colormap;
GList *selection = GTK_CLIST (clist)->selection;
@@ -1635,8 +1636,15 @@
getcwd (current_local_dir, sizeof (current_local_dir));
- tmpnam (tmp_filename);
- tmp = fopen (tmp_filename, "w");
+ if ((fd = mkstemp (tmp_filename)) == -1 || (tmp = fdopen (fd, "w")) == NULL)
+ {
+ if (fd != -1) {
+ unlink(tmp_filename);
+ close(fd);
+ }
+ DEBUG("Unable to create temporary file.");
+ return;
+ }
colormap = gtk_widget_get_colormap (window);
gdk_color_alloc (colormap, &done_color);
--- session.c.orig Thu Apr 15 17:05:15 1999
+++ session.c Fri Feb 3 23:20:24 2006
@@ -32,7 +32,8 @@
{
FILE *out = NULL;
FTPsession that_session;
- int file_handle;
+ int fd = -1;
+ FILE *file_handle = NULL;
char tmp_filename[MPLEN];
char spawn_tmp[MPLEN];
@@ -41,8 +42,16 @@
strcpy (that_session.start_dir, this_session.cwd_dir);
- tmpnam (tmp_filename);
- file_handle = open (tmp_filename, O_CREAT | O_RDWR, RC_PERM);
+ if ((fd = mkstemp (tmp_filename)) == -1 || (file_handle = fdopen (fd, "w")) == NULL)
+ {
+ if (fd != -1) {
+ unlink(tmp_filename);
+ close(fd);
+ }
+ DEBUG("Unable to create temporary file.");
+ return;
+ }
+
write (file_handle, &that_session, sizeof (FTPsession));
close (file_handle);