msg = NULL;
newmono = str_lower(bb_xstrdup(newval));
- lenwrap = strlen(old) * 2 + 1;
- wrapped = (char *) xmalloc(lenwrap);
+ lenwrap = strlen(old);
+ wrapped = (char *) xmalloc(lenwrap * 2 + 1);
str_lower(strcpy(wrapped, old));
if (palindrome(newmono))
else if (similiar(wrapped, newmono))
msg = "too similiar";
- else if (strstr(strcat(wrapped, wrapped), newmono))
- msg = "rotated";
+ else {
+ safe_strncpy(wrapped + lenwrap, wrapped, lenwrap + 1);
+ if (strstr(wrapped, newmono))
+ msg = "rotated";
+ }
bzero(newmono, strlen(newmono));
- bzero(wrapped, lenwrap);
+ bzero(wrapped, lenwrap * 2);
free(newmono);
free(wrapped);