Index: uspace/lib/usbdev/src/altiface.c
===================================================================
--- uspace/lib/usbdev/src/altiface.c	(revision 7c95d6f581cca56abbce43deed7b2c4c3e46e2b2)
+++ uspace/lib/usbdev/src/altiface.c	(revision 54d1ad9a396b4ef26e783ae3f06a210eae9793b5)
@@ -98,6 +98,6 @@
 	assert(config_descr_size > 0);
 
+	alternates_ptr = NULL;
 	if (interface_number < 0) {
-		alternates_ptr = NULL;
 		return EOK;
 	}
@@ -105,5 +105,4 @@
 	usb_alternate_interfaces_t *alternates
 	    = malloc(sizeof(usb_alternate_interfaces_t));
-
 	if (alternates == NULL) {
 		return ENOMEM;
@@ -119,6 +118,6 @@
 	}
 
-	alternates->alternatives = malloc(alternates->alternative_count
-	    * sizeof(usb_alternate_interface_descriptors_t));
+	alternates->alternatives = calloc(alternates->alternative_count,
+	    sizeof(usb_alternate_interface_descriptors_t));
 	if (alternates->alternatives == NULL) {
 		free(alternates);
@@ -176,5 +175,11 @@
 }
 
-
+void usb_alternate_interfaces_destroy(usb_alternate_interfaces_t *alternate)
+{
+	if (!alternate)
+		return;
+	free(alternate->alternatives);
+	free(alternate);
+}
 /**
  * @}
