The whole GSM class is riddled with crap like this:
GSM3ShieldV1ModemVerification.cpp
String GSM3ShieldV1ModemVerification::getIMEI()
{
String number;
// AT command for obtain IMEI
String modemResponse = modemAccess.writeModemCommand("AT+GSN", 2000);
// Parse and check response
char res_to_compare[modemResponse.length()];
modemResponse.toCharArray(res_to_compare, modemResponse.length());
if(strstr(res_to_compare,"OK") == NULL)
{
return NULL;
There is no excuse for using the String class at all. There is no way to convert a NULL to a String.