私は c で pam モジュールを作成しました。次のコードにより、私の pam はこれを吐き出します。
sudo: pam_authenticate: モジュールが不明です
文字列の md5 ハッシュ値を取得しようとしています。
char *str2md5(const char *str, int length) {
    int n;
    MD5_CTX c;
    unsigned char digest[16];
    char *out = (char*)malloc(33);
    MD5_Init(&c);
    while (length > 0) {
        if (length > 512) {
            MD5_Update(&c, str, 512);
        } else {
            MD5_Update(&c, str, length);
        }
        length -= 512;
        str += 512;
    }
    MD5_Final(digest, &c);
    for (n = 0; n < 16; ++n) {
        snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);
    }
    return out;
} 
そのようにコメントアウトすると機能します
char *str2md5(const char *str, int length) {
    int n;
    MD5_CTX c;
    /*unsigned char digest[16];
    char *out = (char*)malloc(33);
    MD5_Init(&c);
    while (length > 0) {
        if (length > 512) {
            MD5_Update(&c, str, 512);
        } else {
            MD5_Update(&c, str, length);
        }
        length -= 512;
        str += 512;
    }
    MD5_Final(digest, &c);
    for (n = 0; n < 16; ++n) {
        snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);
    }
    return out;*/
}
コードをコメントアウトすると、これが得られます..
DEBUG: 08217239
Authentication Code: 08217239
[sudo] password for richardw: 
pamを使用しているときにmd5ハッシュを取得しようとしているのは些細なことですが、私は何かに取り組んでおり、何らかの理由でpamが好きではありません。誰かが回避策を知っていますか?