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, {