]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/net/multicast_list.c
xnu-3248.20.55.tar.gz
[apple/xnu.git] / bsd / net / multicast_list.c
index 0f9604b42cf3403c11090043b02240d4370255bb..e91aeeb11a988eb856d98c27ede170bc99b7a1ca 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2010 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -130,6 +130,10 @@ multicast_list_program(struct multicast_list * mc_list,
            continue;
        }
        mc = _MALLOC(sizeof(struct multicast_entry), M_DEVBUF, M_WAITOK);
+       if (mc == NULL) {
+               error = ENOBUFS;
+               break;
+       }
        bcopy(LLADDR(&source_sdl), LLADDR(&target_sdl), alen);
        error = ifnet_add_multicast(target_ifp, (struct sockaddr *)&target_sdl, 
                                    &mc->mc_ifma);
@@ -147,5 +151,6 @@ multicast_list_program(struct multicast_list * mc_list,
        (void)multicast_list_remove(mc_list);
        *mc_list = new_mc_list;
     }
+    ifnet_free_multicast_list(source_multicast_list);
     return (error);
 }