diff --git a/api/glue/handler.c b/api/glue/handler.c
index f54ccca0f4aa976d110b275357e75b8b771ebbe4..1a8e357b7be73f4bfdd0f24c0e55d0ba77b547ec 100644
--- a/api/glue/handler.c
+++ b/api/glue/handler.c
@@ -39,8 +39,8 @@ eb_status_t eb_socket_attach(eb_socket_t socketp, eb_handler_t handler) {
   struct eb_socket* socket;
   struct eb_handler_address* address;
   struct eb_handler_callback* callback;
-  uint64_t new_begin, new_end;
-  uint64_t dev_begin, dev_end;
+  eb_address_t new_begin, new_end;
+  eb_address_t dev_begin, dev_end;
   
   /* Get memory */
   addressp = eb_new_handler_address();
@@ -56,6 +56,10 @@ eb_status_t eb_socket_attach(eb_socket_t socketp, eb_handler_t handler) {
   new_begin = handler->device->wbd_begin;
   new_end   = handler->device->wbd_end;
   
+  /* Is the address range supported by our bus size? */
+  if (new_begin != handler->device->wbd_begin || new_end != handler->device->wbd_end)
+    return EB_ADDRESS;
+  
   /* Does it overlap out reserved memory range? */
   if (new_begin < 0x4000) return EB_ADDRESS;