chiark
/
gitweb
/
~ian
/
secnet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Import release 0.1.15
[secnet.git]
/
slip.c
diff --git
a/slip.c
b/slip.c
index 369651f459ec5cf3f0915b8eac4c96ee473d76e0..de138f9fd98a4e904aeb14c4936662b67f6da696 100644
(file)
--- a/
slip.c
+++ b/
slip.c
@@
-106,7
+106,7
@@
static void slip_unstuff(struct slip *st, uint8_t *buf, uint32_t l)
}
static void slip_init(struct slip *st, struct cloc loc, dict_t *dict,
}
static void slip_init(struct slip *st, struct cloc loc, dict_t *dict,
- string_t name, netlink_deliver_fn *to_host)
+
c
string_t name, netlink_deliver_fn *to_host)
{
st->netlink_to_tunnel=
netlink_init(&st->nl,st,loc,dict,
{
st->netlink_to_tunnel=
netlink_init(&st->nl,st,loc,dict,
@@
-124,9
+124,9
@@
struct userv {
struct slip slip;
int txfd; /* We transmit to userv */
int rxfd; /* We receive from userv */
struct slip slip;
int txfd; /* We transmit to userv */
int rxfd; /* We receive from userv */
- string_t userv_path;
- string_t service_user;
- string_t service_name;
+
c
string_t userv_path;
+
c
string_t service_user;
+
c
string_t service_name;
pid_t pid;
bool_t expecting_userv_exit;
};
pid_t pid;
bool_t expecting_userv_exit;
};
@@
-140,9
+140,9
@@
static int userv_beforepoll(void *sst, struct pollfd *fds, int *nfds_io,
if (st->rxfd!=-1) {
*nfds_io=2;
fds[0].fd=st->txfd;
if (st->rxfd!=-1) {
*nfds_io=2;
fds[0].fd=st->txfd;
- fds[0].events=
POLLERR
; /* Might want to pick up POLLOUT sometime */
+ fds[0].events=
0
; /* Might want to pick up POLLOUT sometime */
fds[1].fd=st->rxfd;
fds[1].fd=st->rxfd;
- fds[1].events=POLLIN
|POLLERR|POLLHUP
;
+ fds[1].events=POLLIN;
} else {
*nfds_io=0;
}
} else {
*nfds_io=0;
}
@@
-208,8
+208,8
@@
static void userv_userv_callback(void *sst, pid_t pid, int status)
}
struct userv_entry_rec {
}
struct userv_entry_rec {
- string_t path;
- char **argv;
+
c
string_t path;
+ c
onst c
har **argv;
int in;
int out;
/* XXX perhaps we should collect and log stderr? */
int in;
int out;
/* XXX perhaps we should collect and log stderr? */
@@
-224,7
+224,9
@@
static void userv_entry(void *sst)
/* XXX close all other fds */
setsid();
/* XXX close all other fds */
setsid();
- execvp(st->path,st->argv);
+ /* XXX We really should strdup() all of argv[] but because we'll just
+ exit anyway if execvp() fails it doesn't seem worth bothering. */
+ execvp(st->path,(char *const*)st->argv);
perror("userv-entry: execvp()");
exit(1);
}
perror("userv-entry: execvp()");
exit(1);
}