С crypt (3) - справочная страница Linux :
char *crypt(const char *key, const char *salt);
Возвращаемое значение :
Указатель на зашифрованный пароль возвращается. При ошибке возвращается NULL
.
Поскольку возвращаемое значение неизвестно, если не заданы ключ и соль, это должно быть динамически распределенная память, но valgrind не согласен.