diff options
author | Sean Bright <sean@malleable.com> | 2012-12-13 15:37:55 +0000 |
---|---|---|
committer | Sean Bright <sean@malleable.com> | 2012-12-13 15:37:55 +0000 |
commit | d33e46a47f37fb462a07a8c185259eac35411121 (patch) | |
tree | 4bf5bd47193510e7a1ad6bff99a8410d1447c6d6 /res/res_calendar_exchange.c | |
parent | 609ffb429a1892c79748b2531df49f3ae130fef5 (diff) |
Use the UUID API to generate and validate UUIDs for res_calendar_exchange.
Currently the res_calendar_exchange module uses its own method of generating
UUIDs using ast_random(). Now that we have a UUID API we should use that
instead.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@377974 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_calendar_exchange.c')
-rw-r--r-- | res/res_calendar_exchange.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/res/res_calendar_exchange.c b/res/res_calendar_exchange.c index e7beeafb2..dda4414be 100644 --- a/res/res_calendar_exchange.c +++ b/res/res_calendar_exchange.c @@ -44,6 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/lock.h" #include "asterisk/config.h" #include "asterisk/astobj2.h" +#include "asterisk/uuid.h" static void *exchangecal_load_calendar(void *data); static void *unref_exchangecal(void *obj); @@ -241,36 +242,30 @@ static void *unref_exchangecal(void *obj) /* It is very important to use the return value of this function as a realloc could occur */ static struct ast_str *generate_exchange_uuid(struct ast_str *uid) { - unsigned short val[8]; - int x; + char buffer[AST_UUID_STR_LEN]; + struct ast_uuid *uuid = ast_uuid_generate(); - for (x = 0; x < 8; x++) { - val[x] = ast_random(); + if (!uuid) { + return NULL; } - ast_str_set(&uid, 0, "%04x%04x-%04x-%04x-%04x-%04x%04x%04x", val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7]); + + ast_str_set(&uid, 0, "%s", ast_uuid_to_str(uuid, buffer, AST_UUID_STR_LEN)); + + ast_free(uuid); return uid; } static int is_valid_uuid(struct ast_str *uid) { - int i; + struct ast_uuid *uuid = ast_str_to_uuid(ast_str_buffer(uid)); - if (ast_str_strlen(uid) != 36) { - return 0; + if (uuid) { + ast_free(uuid); + return 1; } - for (i = 0; i < ast_str_strlen(uid); i++) { - if (i == 8 || i == 13 || i == 18 || i == 23) { - if (ast_str_buffer(uid)[i] != '-') { - return 0; - } - } else if (!((ast_str_buffer(uid)[i] > 47 && ast_str_buffer(uid)[i] < 58) || (ast_str_buffer(uid)[i] > 96 && ast_str_buffer(uid)[i] < 103))) { - return 0; - } - } - - return 1; + return 0; } static struct ast_str *xml_encode_str(struct ast_str *dst, const char *src) |