/** * Get an positive int from /dev/urandom. * @return A random integer. */ int urandom_pos_int(void) { int i; read_urandom(&i, sizeof(i)); if (i < 0) return -i; return i; }
int id_create(struct id *id) { unsigned i; size_t len = sizeof(id->uuid); memset(id->uuid, 0, len); if (!read_urandom(&id->uuid, len)) { return 0; } /* * Skip out the last 2 chars in randomized creation for LVM1 * backwards compatibility. */ for (i = 0; i < len; i++) id->uuid[i] = _c[id->uuid[i] % (sizeof(_c) - 3)]; return 1; }