diff --git a/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
index 85bf4f0e06563a53965d10ae7bc45e012f8b12ee..751ae4ccf5bbc741def8cea9ea0e555be8f230f0 100644
--- a/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
+++ b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
@@ -43,7 +43,11 @@ int XIicPs_MasterRecvPolled_ours(XIicPs *InstancePtr, u8 *MsgPtr,
 int XIicPs_SetupMaster(XIicPs *InstancePtr, int Role);
 
 int zybo_i2c_reset(struct I2CDriver *self) {
+  // ensure all required memory is allocated
   struct ZyboI2CState *state = self->state;
+  if (state == NULL) return -1;
+  if (state->inst == NULL) return -1;
+  if (state->busId > 1) return -1;
   int i2cID = state->busId;
   XIicPs *inst = state->inst;