
< 		gsm->buf[gsm->count++] = c;
< 		if (gsm->count == gsm->len)
---
> 		#define SAFE_WRITE(buf, index, value) \
> 			do { if (index < sizeof(buf)) buf[index] = value; } while(0)
> 		SAFE_WRITE(gsm->buf, gsm->count, c);
> 		gsm->count++;
> 		if (gsm->count == gsm->len)
