X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fconfig.c;h=66e13161bf363232c8febf8ef00ea57e7adc567c;hb=39c1cfe1013d5731f64407881ddf3dc16942063a;hp=db15228365ab8a62408b6aa08e5f3bc9181040b5;hpb=39245ddf5d1a220702a03683b78f1b868606c60a;p=framework%2Fconnectivity%2Fconnman.git diff --git a/src/config.c b/src/config.c index db15228..66e1316 100644 --- a/src/config.c +++ b/src/config.c @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2010 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2012 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -258,7 +258,13 @@ static int load_service(GKeyFile *keyfile, const char *group, } for (i = 0; i < hex_ssid_len; i += 2) { - sscanf(hex_ssid + i, "%02x", &hex); + if (sscanf(hex_ssid + i, "%02x", &hex) <= 0) { + connman_warn("Invalid SSID %s", hex_ssid); + g_free(ssid); + g_free(hex_ssid); + err = -EILSEQ; + goto err; + } ssid[j++] = hex; } @@ -378,7 +384,7 @@ static int load_config(struct connman_config *config) gsize length; char **groups; char *str; - gboolean protected; + gboolean protected, found = FALSE; int i; DBG("config %p", config); @@ -412,10 +418,17 @@ static int load_config(struct connman_config *config) groups = g_key_file_get_groups(keyfile, &length); for (i = 0; groups[i] != NULL; i++) { - if (g_str_has_prefix(groups[i], "service_") == TRUE) - load_service(keyfile, groups[i], config); + if (g_str_has_prefix(groups[i], "service_") == TRUE) { + if (load_service(keyfile, groups[i], config) == 0) + found = TRUE; + } } + if (found == FALSE) + connman_warn("Config file %s/%s.config does not contain any " + "configuration that can be provisioned!", + STORAGEDIR, config->ident); + g_strfreev(groups); g_key_file_free(keyfile);