diff --git a/src/smblib/smballoc.c b/src/smblib/smballoc.c
index b26be60c7f2010d576bfc5358e480abd1edd3b2e..fc271a31c753970cbbd6728f5d9d52f656fb39c6 100644
--- a/src/smblib/smballoc.c
+++ b/src/smblib/smballoc.c
@@ -129,6 +129,9 @@ int smb_freemsgdat(smb_t* smb, off_t offset, ulong length, uint16_t refs)
 	off_t	sda_offset;
 	off_t	flen;
 
+	if(offset < 0)
+		return SMB_ERR_DAT_OFFSET;
+
 	if(smb->status.attr&SMB_HYPERALLOC)	/* do nothing */
 		return(SMB_SUCCESS);