Как использовать XauGetAuthByAddr - PullRequest
0 голосов
/ 12 марта 2012

Эта функция кажется довольно простой, но я не могу заставить ее вернуть результаты. Я написал небольшую вспомогательную программу, чтобы попытаться выяснить, какие параметры она хочет:

#include <iostream>
#include <string.h>

#include <X11/X.h>
#include <X11/Xauth.h>

int main(int argc, char * argv[])
{
    Xauth * xauth_ptr = XauGetAuthByAddr(FamilyInternet,
                                         strlen(argv[1]),
                                         argv[1],
                                         strlen(argv[2]),
                                         argv[2],
                                         strlen("MIT-MAGIC-COOKIE-1"),
                                         "MIT-MAGIC-COOKIE-1");
    if (!xauth_ptr)
    {
        std::cerr << "Could not look up " << argv[1] << ":" << argv[2] << std::endl;
        return -1;
    }

    std::cout << "Name: " << xauth_ptr->name << std::endl;
    return 0;
}

xauth list показывает, что я должен быть в состоянии найти:

$ xauth list
ubuntu/unix:17  MIT-MAGIC-COOKIE-1  181bc2c2aa5c9e7b8d5bde61d2dbe6bb
ubuntu/unix:18  MIT-MAGIC-COOKIE-1  7ef7984fb5d2f18083ffc8b16f675c66
ubuntu/unix:15  MIT-MAGIC-COOKIE-1  c6c31dc60627288c0b3b4d1768cc490d
ubuntu/unix:16  MIT-MAGIC-COOKIE-1  05dfde3b782fda7df4aaf8a840645bba

Я передал мою программу '127.0.0.1', мой фактический IP, 'localhost', 'ubuntu', 'ubuntu / unix' безрезультатно. Спасибо за помощь.

1 Ответ

1 голос
/ 13 марта 2012

Вы указали FamilyInternet (указывая адрес TCP), но все ваши примеры адресов из списка xauth помечены /unix, что означает, что они являются сокетами домена Unix, адресованными через FamilyLocal, как вы можете видеть в функция dump_entry в источниках xauth .

...