+2000-02-18 Ken Raeburn <raeburn@mit.edu>
+
+ * cmds.c (mls): Declare some variables volatile to protect against
+ getting clobbered by setjmp/longjmp.
+ * ftp.c (sendrequest, recvrequest, proxtrans): Ditto.
+ * main.c (main): Ditto.
+ * pclose.c (mypopen): Ditto.
+
1999-10-26 Tom Yu <tlyu@mit.edu>
* Makefile.in: Clean up usage of CFLAGS, CPPFLAGS, DEFS, DEFINES,
extern jmp_buf jabort;
sig_t oldintr;
int ointer, i;
- char *cmd, mode[1], *dest;
+ char *volatile cmd, mode[1], *dest;
sigtype mabort();
if (argc < 2 && !another(&argc, &argv, "remote-files"))
struct stat st;
struct timeval start, stop;
register int c, d;
- FILE *fin, *dout = 0, *popen();
- int (*closefunc)(), pclose(), fclose();
- sig_t oldintr, oldintp;
- long bytes = 0, hashbytes = HASHBYTES;
- char *lmode, buf[FTP_BUFSIZ], *bufp;
+ FILE *volatile fin, *volatile dout = 0, *popen();
+ int (*volatile closefunc)(), pclose(), fclose();
+ volatile sig_t oldintr, oldintp;
+ volatile long bytes = 0, hashbytes = HASHBYTES;
+ char *volatile lmode, buf[FTP_BUFSIZ], *bufp;
sigtype abortsend();
if (verbose && printnames) {
}
recvrequest(cmd, local, remote, lmode, printnames)
- char *cmd, *local, *remote, *lmode;
+ char *cmd, *volatile local, *remote, *lmode;
{
- FILE *fout, *din = 0, *popen();
- int (*closefunc)(), pclose(), fclose();
- sig_t oldintr, oldintp;
- int is_retr, tcrflag, bare_lfs = 0;
+ FILE *volatile fout, *volatile din = 0, *popen();
+ int (*volatile closefunc)(), pclose(), fclose();
+ volatile sig_t oldintr, oldintp;
+ volatile int is_retr, tcrflag, bare_lfs = 0;
char *gunique();
static int bufsize;
static char *buf;
int blksize;
- long bytes = 0, hashbytes = HASHBYTES;
+ volatile long bytes = 0, hashbytes = HASHBYTES;
register int c, d;
struct timeval start, stop;
struct stat st;
proxtrans(cmd, local, remote)
char *cmd, *local, *remote;
{
- sig_t oldintr;
- int secndflag = 0, prox_type, nfnd;
+ volatile sig_t oldintr;
+ volatile int secndflag = 0;
+ int prox_type, nfnd;
extern jmp_buf ptabort;
- char *cmd2;
+ char *volatile cmd2;
fd_set mask;
sigtype abortpt();
#endif /* KRB5_KRB4_COMPAT */
main(argc, argv)
- char *argv[];
+ volatile int argc;
+ char **volatile argv;
{
register char *cp;
int top;
char *mode;
{
int p[2];
- int myside, hisside, pid;
+ volatile int myside, hisside;
+ int pid;
if (nfiles <= 0)
nfiles = getdtablesize();
+2000-02-18 Ken Raeburn <raeburn@mit.edu>
+
+ * ftpd.c (reply, lreply): Declare with format attribute under
+ gcc.
+ (send_data, receive_data, send_file_list): Declare some variables
+ volatile to protect against getting clobbered by setjmp/longjmp.
+ * popen.c (ftpd_popen): Declare IOP volatile.
+
1999-10-26 Tom Yu <tlyu@mit.edu>
* Makefile.in: Clean up usage of CFLAGS, CPPFLAGS, DEFS, DEFINES,
#include <k5-util.h>
#ifdef STDARG
-extern reply(int, char *, ...);
-extern lreply(int, char *, ...);
+extern reply(int, char *, ...)
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+ __attribute__ ((__format__ (__printf__, 2, 3)))
+#endif
+ ;
+extern lreply(int, char *, ...)
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+ __attribute__ ((__format__ (__printf__, 2, 3)))
+#endif
+ ;
#endif
#ifdef KRB5_KRB4_COMPAT
register int c, cnt;
register char *buf;
int netfd, filefd;
- int ret = 0;
+ volatile int ret = 0;
transflag++;
if (sigsetjmp(urgcatch, 1)) {
FILE *instr, *outstr;
{
register int c;
- int cnt, bare_lfs = 0;
+ volatile int cnt, bare_lfs = 0;
char buf[FTP_BUFSIZ];
int ret = 0;
struct stat st;
DIR *dirp = NULL;
struct dirent *dir;
- FILE *dout = NULL;
- register char **dirlist, *dirname;
- int simple = 0;
+ FILE *volatile dout = NULL;
+ register char **volatile dirlist, *dirname;
+ volatile int simple = 0;
#ifndef strpbrk
char *strpbrk();
#endif
- int ret = 0;
+ volatile int ret = 0;
if (strpbrk(whichfiles, "~{[*?") != NULL) {
extern char **ftpglob(), *globerr;
char ccname[MAXPATHLEN];
#ifdef KRB5_KRB4_COMPAT
krb5_principal kpcserver;
- krb5_error_code kpccode;
- int kpcval;
krb5_creds increds, *v5creds;
CREDENTIALS v4creds;
#endif
char *program, *type;
{
register char *cp;
- FILE *iop;
+ FILE *volatile iop;
int argc, gargc, pdes[2], pid;
char **pop, *argv[MAX_ARGV], *gargv[MAX_GARGV], *vv[2];
extern char **ftpglob(), **copyblk();