diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog
 
+## 0.2.1.1
+
+* Fixes a bug that could result in segfaults when reading corrupted data.
+
 ## 0.2.1.0
 
 Release notes:
diff --git a/src/Data/Store/Internal.hs b/src/Data/Store/Internal.hs
--- a/src/Data/Store/Internal.hs
+++ b/src/Data/Store/Internal.hs
@@ -275,8 +275,9 @@
 skip :: Int -> Peek ()
 skip len = Peek $ \end ptr -> do
     let ptr2 = ptr `plusPtr` len
-    when (ptr2 > end) $
-        tooManyBytes len (end `minusPtr` ptr) "skip"
+        remaining = end `minusPtr` ptr
+    when (len > remaining) $ -- Do not perform the check on the new pointer, since it could have overflowed
+        tooManyBytes len remaining "skip"
     return (ptr2, ())
 
 -- | Isolate the input to n bytes, skipping n bytes forward. Fails if @m@
@@ -285,8 +286,9 @@
 isolate :: Int -> Peek a -> Peek a
 isolate len m = Peek $ \end ptr -> do
     let ptr2 = ptr `plusPtr` len
-    when (ptr2 > end) $
-        tooManyBytes len (end `minusPtr` ptr) "isolate"
+        remaining = end `minusPtr` ptr
+    when (len > remaining) $ -- Do not perform the check on the new pointer, since it could have overflowed
+        tooManyBytes len remaining "isolate"
     (ptr', x) <- runPeek m end ptr
     when (ptr' > end) $
         throwIO $ PeekException (ptr' `minusPtr` end) "Overshot end of isolated bytes"
diff --git a/store.cabal b/store.cabal
--- a/store.cabal
+++ b/store.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:                store
-version:             0.2.1.0
+version:             0.2.1.1
 synopsis:            Fast binary serialization
 homepage:            https://github.com/fpco/store#readme
 bug-reports:         https://github.com/fpco/store/issues
