diff options
author | Bastien Nocera <hadess@hadess.net> | 2016-05-09 12:45:24 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2016-05-13 12:39:16 +0200 |
commit | 6aef5099f7d384decfbfb36bec5d6d2328b6e16d (patch) | |
tree | 6ab2dfe74a710b04206e031acdd3a5d0d365aaec | |
parent | 0d767a0d6f6676812d28f57cdde3db66a023a533 (diff) | |
download | bluez-tools-6aef5099f7d384decfbfb36bec5d6d2328b6e16d.tar.gz |
bt-agent: Fix PIN code scanning
-rw-r--r-- | src/lib/agent-helper.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/agent-helper.c b/src/lib/agent-helper.c index a4d1a04..c9f86dc 100644 --- a/src/lib/agent-helper.c +++ b/src/lib/agent-helper.c @@ -29,6 +29,7 @@ #include <gio/gio.h> #include <glib.h> #include <string.h> +#include <stdlib.h> #include "agent-helper.h" @@ -287,7 +288,7 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar GError *error = NULL; Device *device_obj = device_new(g_variant_get_string(g_variant_get_child_value(parameters, 0), NULL)); const gchar *pin = _find_device_pin(device_get_dbus_object_path(device_obj)); - const gchar ret[16]; + gchar *ret = NULL; gboolean invoke = FALSE; if (_interactive) @@ -306,14 +307,14 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar { if (_interactive) g_print("Passkey found\n"); - sscanf(pin, "%s", &ret); + sscanf(pin, "%ms", &ret); invoke = TRUE; } else if (_interactive) { g_print("Enter passkey: "); errno = 0; - if (scanf("%s", &ret) == EOF && errno) + if (scanf("%ms", &ret) == EOF && errno) g_warning("%s\n", strerror(errno)); invoke = TRUE; } @@ -328,6 +329,9 @@ static void _bt_agent_method_call_func(GDBusConnection *connection, const gchar { g_dbus_method_invocation_return_dbus_error(invocation, "org.bluez.Error.Rejected", "No passkey inputted"); } + + if (ret) + free(ret); } } |