diff --git a/sample/chromium/subsetter_impl.cc b/sample/chromium/subsetter_impl.cc
index 7e7cf61..3708f44 100644
--- a/sample/chromium/subsetter_impl.cc
+++ b/sample/chromium/subsetter_impl.cc
@@ -313,6 +313,11 @@
     IntegerList removed_indexes;
     BitmapGlyphInfoMap info_map;
     for (size_t j = 0; j < index_builders->size(); ++j) {
+      if ((*index_builders)[j] == NULL) {
+        // Subtable is malformed, let's just skip it.
+        removed_indexes.push_back(j);
+        continue;
+      }
       int32_t first_glyph_id = (*index_builders)[j]->first_glyph_index();
       int32_t last_glyph_id = (*index_builders)[j]->last_glyph_index();
       if (!HasOverlap(first_glyph_id, last_glyph_id, glyph_ids)) {
diff --git a/sfntly/table/bitmap/index_sub_table_format1.cc b/sfntly/table/bitmap/index_sub_table_format1.cc
index db73723..5199e18 100644
--- a/sfntly/table/bitmap/index_sub_table_format1.cc
+++ b/sfntly/table/bitmap/index_sub_table_format1.cc
@@ -121,6 +121,9 @@
   ReadableFontDataPtr new_data;
   new_data.Attach(down_cast<ReadableFontData*>(
       data->Slice(index_sub_table_offset, length)));
+  if (new_data == NULL) {
+    return NULL;
+  }
   IndexSubTableFormat1BuilderPtr output =
       new IndexSubTableFormat1::Builder(new_data,
                                         first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format2.cc b/sfntly/table/bitmap/index_sub_table_format2.cc
index b3bffda..ce73e9b 100644
--- a/sfntly/table/bitmap/index_sub_table_format2.cc
+++ b/sfntly/table/bitmap/index_sub_table_format2.cc
@@ -139,6 +139,9 @@
   ReadableFontDataPtr new_data;
   new_data.Attach(down_cast<ReadableFontData*>(
       data->Slice(index_sub_table_offset, length)));
+  if (new_data == NULL) {
+    return NULL;
+  }
   IndexSubTableFormat2BuilderPtr output =
       new IndexSubTableFormat2::Builder(new_data,
                                         first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format3.cc b/sfntly/table/bitmap/index_sub_table_format3.cc
index b3e418f..e2679b7 100644
--- a/sfntly/table/bitmap/index_sub_table_format3.cc
+++ b/sfntly/table/bitmap/index_sub_table_format3.cc
@@ -134,6 +134,9 @@
   ReadableFontDataPtr new_data;
   new_data.Attach(down_cast<ReadableFontData*>(
       data->Slice(index_sub_table_offset, length)));
+  if (new_data == NULL) {
+    return NULL;
+  }
   IndexSubTableFormat3BuilderPtr output =
       new IndexSubTableFormat3::Builder(new_data,
                                         first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format4.cc b/sfntly/table/bitmap/index_sub_table_format4.cc
index 23f3e47..5baa2a5 100644
--- a/sfntly/table/bitmap/index_sub_table_format4.cc
+++ b/sfntly/table/bitmap/index_sub_table_format4.cc
@@ -168,6 +168,9 @@
   ReadableFontDataPtr new_data;
   new_data.Attach(down_cast<ReadableFontData*>(
       data->Slice(index_sub_table_offset, length)));
+  if (new_data == NULL) {
+    return NULL;
+  }
   IndexSubTableFormat4BuilderPtr output =
       new IndexSubTableFormat4::Builder(new_data,
                                         first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format5.cc b/sfntly/table/bitmap/index_sub_table_format5.cc
index b4ab1b8..0ca21fe 100644
--- a/sfntly/table/bitmap/index_sub_table_format5.cc
+++ b/sfntly/table/bitmap/index_sub_table_format5.cc
@@ -141,6 +141,9 @@
   ReadableFontDataPtr new_data;
   new_data.Attach(down_cast<ReadableFontData*>(
       data->Slice(index_sub_table_offset, length)));
+  if (new_data == NULL) {
+    return NULL;
+  }
   IndexSubTableFormat5BuilderPtr output =
       new IndexSubTableFormat5::Builder(new_data,
                                         first_glyph_index,
