X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fsolaris%2Fdevice.c;h=26121e27350b9e5974f6b8982f58a3753eca8be9;hp=579cece0d601100e6d79fcfc080a1e2bfed5c23e;hb=8793fb7d43161f4d5358ff73b7a4937ad7e642e2;hpb=178e52f76ef4ba40748c13ea7e518837394d6dbc;ds=sidebyside diff --git a/src/solaris/device.c b/src/solaris/device.c index 579cece0..26121e27 100644 --- a/src/solaris/device.c +++ b/src/solaris/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Solaris tun device Copyright (C) 2001-2005 Ivo Timmermans, - 2001-2011 Guus Sliepen + 2001-2012 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -55,6 +55,10 @@ static bool setup_device(void) { return false; } +#ifdef FD_CLOEXEC + fcntl(device_fd, F_SETFD, FD_CLOEXEC); +#endif + ppa = 0; ptr = device; @@ -67,6 +71,10 @@ static bool setup_device(void) { return false; } +#ifdef FD_CLOEXEC + fcntl(ip_fd, F_SETFD, FD_CLOEXEC); +#endif + /* Assign a new PPA and get its unit number. */ if((ppa = ioctl(device_fd, TUNNEWPPA, ppa)) < 0) { logger(LOG_ERR, "Can't assign new interface: %s", strerror(errno)); @@ -79,6 +87,10 @@ static bool setup_device(void) { return false; } +#ifdef FD_CLOEXEC + fcntl(if_fd, F_SETFD, FD_CLOEXEC); +#endif + if(ioctl(if_fd, I_PUSH, "ip") < 0) { logger(LOG_ERR, "Can't push IP module: %s", strerror(errno)); return false; @@ -139,6 +151,7 @@ static bool read_packet(vpn_packet_t *packet) { return false; } + memset(packet->data, 0, 12); packet->len = lenin + 14; device_total_in += packet->len;