Commit 2f167bfa authored by Jeff Dike's avatar Jeff Dike

Merged a number of bug fixes from the 2.4 pool.

parent fc983daf
......@@ -30,7 +30,7 @@ void *fd_init(char *str, int device, struct chan_opts *opts)
}
str++;
n = strtoul(str, &end, 0);
if(*end != '\0'){
if((*end != '\0') || (end == str)){
printk("fd_init : couldn't parse file descriptor '%s'\n", str);
return(NULL);
}
......
......@@ -92,7 +92,7 @@ int mcast_setup(char *str, char **mac_out, void *data)
if(port_str != NULL){
n = simple_strtoul(port_str, &last, 10);
if(*last != '\0'){
if((*last != '\0') || (last == port_str)){
printk(KERN_ERR "mcast_setup - Bad port : '%s'\n",
port_str);
return(0);
......@@ -102,7 +102,7 @@ int mcast_setup(char *str, char **mac_out, void *data)
if(ttl_str != NULL){
init->ttl = simple_strtoul(ttl_str, &last, 10);
if(*last != '\0'){
if((*last != '\0') || (last == ttl_str)){
printk(KERN_ERR "mcast_setup - Bad ttl : '%s'\n",
ttl_str);
return(0);
......
......@@ -40,7 +40,7 @@ void *port_init(char *str, int device, struct chan_opts *opts)
}
str++;
port = strtoul(str, &end, 0);
if(*end != '\0'){
if((*end != '\0') || (end == str)){
printk("port_init : couldn't parse port '%s'\n", str);
return(NULL);
}
......
......@@ -218,7 +218,7 @@ static int ubd_setup_common(char *str, int *index_out)
return(0);
}
major = simple_strtoul(str, &end, 0);
if(*end != '\0'){
if((*end != '\0') || (end == str)){
printk(KERN_ERR
"ubd_setup : didn't parse major number\n");
return(1);
......@@ -520,7 +520,10 @@ static int ubd_add(int n)
struct ubd *dev = &ubd_dev[n];
int err;
if (!dev->file || dev->is_dir)
if(dev->is_dir)
return(-EISDIR);
if (!dev->file)
return(-ENODEV);
if (ubd_open_dev(dev))
......@@ -583,7 +586,7 @@ static int ubd_remove(char *str)
return(err); /* it should be a number 0-7/a-h */
n = *str - '0';
if(n > MAX_DEV)
if(n >= MAX_DEV)
return(err);
dev = &ubd_dev[n];
......
......@@ -93,6 +93,9 @@ int xterm_open(int input, int output, int primary, void *d)
"/usr/lib/uml/port-helper", "-uml-socket",
file, NULL };
if(access(argv[4], X_OK))
argv[4] = "port-helper";
fd = mkstemp(file);
if(fd < 0){
printk("xterm_open : mkstemp failed, errno = %d\n", errno);
......
......@@ -42,7 +42,7 @@ static int write_proc_exitcode(struct file *file, const char *buffer,
return(count);
}
int make_proc_exitcode(void)
static int make_proc_exitcode(void)
{
struct proc_dir_entry *ent;
......
......@@ -86,7 +86,10 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv,
errno);
return(-errno);
}
else if(n != 0) pid = -err;
else if(n != 0){
waitpid(pid, NULL, 0);
pid = -err;
}
if(stack_out == NULL) free_stack(stack, 0);
else *stack_out = stack;
......
......@@ -188,7 +188,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
pollfds_size++;
}
if(type == IRQ_WRITE) events = 0;
if(type == IRQ_WRITE)
fd = -1;
pollfds[pollfds_num] = ((struct pollfd) { fd : fd,
events : events,
......
......@@ -103,7 +103,7 @@ static int __init set_tty_log_fd(char *name, int *add)
char *end;
tty_log_fd = strtoul(name, &end, 0);
if(*end != '\0'){
if((*end != '\0') || (end == name)){
printk("set_tty_log_fd - strtoul failed on '%s'\n", name);
tty_log_fd = -1;
}
......
......@@ -171,7 +171,8 @@ int os_pipe(int *fds, int stream, int close_on_exec)
int err, type = stream ? SOCK_STREAM : SOCK_DGRAM;
err = socketpair(AF_UNIX, type, 0, fds);
if(err) return(-errno);
if(err)
return(-errno);
if(!close_on_exec)
return(0);
......
......@@ -17,6 +17,7 @@
extern void *switch_to(void *prev, void *next, void *last);
extern int get_signals(void);
extern int set_signals(int enable);
extern int get_signals(void);
extern void block_signals(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment