I have came into some legacy code while we are migrated from AIX to Linux Redhat and found Some strange condition for strcmp that's seems was compiled fine for AIX but gave segmentation fault for Linux
void conv_virgin(char original_number[20], char normalised_number[20],char b_imsi[20]) {
if(strlen(original_number)<2||strcmp(original_number,""||strlen (b_imsi)<6)==0)
{
strcpy(normalised_number,original_number);
return;
}
}
The line seems compiled fine for AIX as we have the shared object running since more than 2 year
strcmp(original_number,""||strlen (b_imsi)<6)==0
What am I missing ? The intended code was to check for two fields which is corrected now to
if(strlen(original_number)<2||strlen (b_imsi)<6)