obexapp 1.4.5

Iain Hibbert plunky at rya-online.net
Thu Feb 22 20:09:12 UTC 2007


On Thu, 22 Feb 2007, Maksim Yevmenkin wrote:

> ah, i see. i was thinking exactly the same, except that i would like
> to make authentication procedure between local sdp client and local
> sdp server well defined and mandatory.

Hmm, maybe with an AUTH Request/Response rather than credential check? I'm
not sure if that would be a lot of work..?

I had a thought before about adding an option to permit group access to
the server (eg "-G staff"), and this would not seem so very difficult to
implement (maybe even multiple groups..)

> right now, sdpd simply uses getsockopt() to pull cached (inside
> socket) peers credentials (i.e. no messages flow between the client
> and the server)

Yeah, thats a FreeBSD extension though and so far as I recall, I think
there was some resistance to including it in NetBSD for whatever reason.

I didn't get around to the zero length packets, but the following diff
which moves the ServerRegister up before the setuid() calls does the job
for NetBSD at least..

iain

--- server.c.orig	2007-01-30 00:35:23.000000000 +0000
+++ server.c
@@ -149,6 +149,19 @@ obexapp_server(obex_t *handle)
 			strlcpy(context->root, pw->pw_dir, PATH_MAX);
 	}

+	log_info("%s: Starting OBEX server", __func__);
+
+	if (OBEX_SetTransportMTU(handle, context->mtu, context->mtu) < 0) {
+		log_err("%s(): OBEX_SetTransportMTU failed", __func__);
+		goto done;
+	}
+
+	if (OBEX_ServerRegister(handle, (struct sockaddr *) &context->addr,
+			sizeof(context->addr)) < 0) {
+		log_err("%s(): OBEX_ServerRegister failed", __func__);
+		goto done;
+	}
+
 	if (getuid() == 0) {
 		if (context->secure) {
 			if (chroot(context->root) < 0) {
@@ -184,19 +197,6 @@ obexapp_server(obex_t *handle)
 		goto done;
 	}

-	log_info("%s: Starting OBEX server", __func__);
-
-	if (OBEX_SetTransportMTU(handle, context->mtu, context->mtu) < 0) {
-		log_err("%s(): OBEX_SetTransportMTU failed", __func__);
-		goto done;
-	}
-
-	if (OBEX_ServerRegister(handle, (struct sockaddr *) &context->addr,
-			sizeof(context->addr)) < 0) {
-		log_err("%s(): OBEX_ServerRegister failed", __func__);
-		goto done;
-	}
-
 	log_debug("%s(): Entering event processing loop...", __func__);

 	for (error = 0, context->done = 0; !context->done; ) {


More information about the freebsd-bluetooth mailing list