diff --git a/maestro/cdo.c b/maestro/cdo.c index 328f4bab799a381cad78468a7564c0fff8083697..37f25ccaacc2b9e92ac52866c76956aded77c3ec 100644 --- a/maestro/cdo.c +++ b/maestro/cdo.c @@ -306,14 +306,12 @@ mstro_cdo_declare(const char *name, return MSTRO_NOMEM; } - size_t len = strlen((char*)name); - (*result)->name = malloc(sizeof(unsigned char)*(len+1)); + (*result)->name = strdup(name); if((*result)->name==NULL) { ERR("Cannot allocate for CDO name\n"); mstro_cdo__free(result); return MSTRO_NOMEM; } - memcpy((*result)->name, name, len+1); mstro_cdo_state_set(*result, MSTRO_CDO_STATE_CREATED); diff --git a/tests/coverage.c b/tests/coverage.c index e80a22f3a7808ea0a3115bf61ae071bdf2a63f67..feff9477b6c46deafc060de8e7cd186ba573a8c6 100644 --- a/tests/coverage.c +++ b/tests/coverage.c @@ -71,12 +71,14 @@ CHEAT_TEST(null_cdo, { CHEAT_TEST(invalid_cdo_declare, { mstro_cdo res; + cheat_assert(MSTRO_OK == mstro_init("Tests","Init",0)); cheat_assert(MSTRO_INVARG==mstro_cdo_declare(NULL, MSTRO_ATTR_DEFAULT, &res)); cheat_assert(MSTRO_INVOUT==mstro_cdo_declare("foo", MSTRO_ATTR_DEFAULT, NULL)); cheat_assert(NULL==MSTRO_ATTR_DEFAULT); - mstro_cdo_attributes x; - cheat_assert(MSTRO_UNIMPL==mstro_cdo_declare("foo", x, &res)); + mstro_cdo_attributes really_invalid_attr=(mstro_cdo_attributes)(1); + cheat_assert(MSTRO_UNIMPL==mstro_cdo_declare("foo", really_invalid_attr, &res)); + cheat_assert(MSTRO_OK == mstro_finalize()); }) CHEAT_TEST(invalid_cdo_seal, {