diff options
author | emax <emax@FreeBSD.org> | 2004-11-18 18:05:15 +0000 |
---|---|---|
committer | emax <emax@FreeBSD.org> | 2004-11-18 18:05:15 +0000 |
commit | d4ffd83e778e80db410d375dac46287dfdf6f5f7 (patch) | |
tree | 6cb568181ac09aadbe16376ca328e1bbee9ccd01 /usr.sbin/bluetooth/bthidd/session.c | |
parent | a1fa5f3147516f8fa8066807a6819a4847ed332e (diff) | |
download | FreeBSD-src-d4ffd83e778e80db410d375dac46287dfdf6f5f7.zip FreeBSD-src-d4ffd83e778e80db410d375dac46287dfdf6f5f7.tar.gz |
Check in updated bthidd(8). This is still work in progress.
Diffstat (limited to 'usr.sbin/bluetooth/bthidd/session.c')
-rw-r--r-- | usr.sbin/bluetooth/bthidd/session.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/usr.sbin/bluetooth/bthidd/session.c b/usr.sbin/bluetooth/bthidd/session.c index 523b918..eefd98a 100644 --- a/usr.sbin/bluetooth/bthidd/session.c +++ b/usr.sbin/bluetooth/bthidd/session.c @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: session.c,v 1.1 2004/02/12 22:46:59 max Exp $ + * $Id: session.c,v 1.2 2004/11/17 21:59:42 max Exp $ * $FreeBSD$ */ @@ -37,6 +37,7 @@ #include <string.h> #include <unistd.h> #include "bthidd.h" +#include "kbd.h" /* * Create new session @@ -53,10 +54,15 @@ session_open(bthid_server_p srv, bdaddr_p bdaddr) if ((s = (bthid_session_p) malloc(sizeof(*s))) != NULL) { s->srv = srv; memcpy(&s->bdaddr, bdaddr, sizeof(s->bdaddr)); - s->ctrl = s->intr = -1; + s->ctrl = -1; + s->intr = -1; s->state = CLOSED; - - LIST_INSERT_HEAD(&srv->sessions, s, next); + s->keys = bit_alloc(kbd_maxkey()); + if (s->keys == NULL) { + free(s); + s = NULL; + } else + LIST_INSERT_HEAD(&srv->sessions, s, next); } return (s); @@ -130,6 +136,8 @@ session_close(bthid_session_p s) s->srv->maxfd --; } + free(s->keys); + memset(s, 0, sizeof(*s)); free(s); } |