diff --git a/src/com/google/enterprise/adaptor/ad/AdAdaptor.java b/src/com/google/enterprise/adaptor/ad/AdAdaptor.java
index 10de468..f334fb5 100644
--- a/src/com/google/enterprise/adaptor/ad/AdAdaptor.java
+++ b/src/com/google/enterprise/adaptor/ad/AdAdaptor.java
@@ -311,7 +311,13 @@
         }
 
         String groupName = getPrincipalName(entity);
-        GroupPrincipal group = new GroupPrincipal(groupName, namespace);
+        GroupPrincipal group;
+        try {
+          group = new GroupPrincipal(groupName, namespace);
+        } catch (IllegalArgumentException iae) {
+          log.log(Level.WARNING, "Skipping over badly-named group", iae);
+          continue;
+        }
         List<Principal> def = new ArrayList<Principal>();
 
         if (!feedBuiltinGroups
@@ -332,8 +338,23 @@
           String memberName = getPrincipalName(member);
           if (member.isGroup()) {
             p = new GroupPrincipal(memberName, namespace);
+            try {
+              p = new GroupPrincipal(memberName, namespace);
+            } catch (IllegalArgumentException iae) {
+              String warning = "Skipping badly-named group \"" + memberName
+                  + "\" from group \"" + groupName + "\".";
+              log.log(Level.WARNING, warning, iae);
+              continue;
+            }
           } else {
-            p = new UserPrincipal(memberName, namespace);
+            try {
+              p = new UserPrincipal(memberName, namespace);
+            } catch (IllegalArgumentException iae) {
+              String warning = "Skipping badly-named user \"" + memberName
+                  + "\" from group \"" + groupName + "\".";
+              log.log(Level.WARNING, warning, iae);
+              continue;
+            }
           }
           def.add(p);
         }
