Catch more invalid arguments.
diff --git a/lib/zip_source_buffer.c b/lib/zip_source_buffer.c
index d3e1301..1f5465a 100644
--- a/lib/zip_source_buffer.c
+++ b/lib/zip_source_buffer.c
@@ -379,6 +379,10 @@
     case SEEK_SET:
 	offset = (zip_int64_t)args->offset;
 	break;
+
+    default:
+	zip_error_set(error, ZIP_ER_INVAL, 0);
+	return -1;
     }
 
     if (offset < 0 || (zip_uint64_t)offset > buffer->size) {
diff --git a/lib/zip_source_window.c b/lib/zip_source_window.c
index ca5359c..e23a7ca 100644
--- a/lib/zip_source_window.c
+++ b/lib/zip_source_window.c
@@ -198,6 +198,10 @@
                 case SEEK_SET:
                     new_offset = (zip_int64_t)ctx->start + args->offset;
                     break;
+
+		default:
+                    zip_error_set(&ctx->error, ZIP_ER_INVAL, 0);
+                    return -1;
             }
             
             if (new_offset < (zip_int64_t)ctx->start || (zip_uint64_t)new_offset > ctx->end) {