Skip to content

Commit 990632d

Browse files
authored
[WRAPPER] Wrapped more symbols for pam and libm (#3424)
1 parent 3644364 commit 990632d

File tree

5 files changed

+119
-55
lines changed

5 files changed

+119
-55
lines changed

src/wrapped/generated/functions_list.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6305,6 +6305,8 @@ wrappedp11kit:
63056305
- iFpppp:
63066306
- p11_kit_pin_register_callback
63076307
wrappedpam:
6308+
- iFpppp:
6309+
- pam_start
63086310
wrappedpango:
63096311
- vFpp:
63106312
- pango_attribute_init

src/wrapped/generated/wrappedpamtypes.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
#define ADDED_FUNCTIONS()
1212
#endif
1313

14+
typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
1415

15-
#define SUPER() ADDED_FUNCTIONS()
16+
#define SUPER() ADDED_FUNCTIONS() \
17+
GO(pam_start, iFpppp_t)
1618

1719
#endif // __wrappedpamTYPES_H_

src/wrapped/wrappedlibm_private.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ GOW(ctanhf, xFx)
123123
GOWD(ctanhl, YFY, ctanh)
124124
GOWD(ctanl, YFY, ctan)
125125
// __cxa_finalize // Weak
126-
// drem // Weak
127-
// dremf // Weak
128-
// dreml // Weak
126+
GOW(drem, dFdd)
127+
GOW(dremf, fFff)
128+
// GOW(dreml,
129129
GOW(erf, dFd)
130130
GOW(erfc, dFd)
131131
GOW(erfcf, fFf)
@@ -198,8 +198,8 @@ GO(__fpclassifyf, iFf)
198198
GOW(frexp, dFdp)
199199
GOW(frexpf, fFfp)
200200
GOWD(frexpl, DFDp, frexp)
201-
// gamma // Weak
202-
// gammaf // Weak
201+
GOW(gamma, dFd)
202+
GOW(gammaf, fFf)
203203
// __gammaf_r_finite
204204
// gammal // Weak
205205
// __gamma_r_finite
@@ -322,8 +322,8 @@ GO(roundeven, dFd) //since C23
322322
GO(roundevenf, fFf)
323323
//GO(roundevenl, DFD)
324324
GOWD(roundl, DFD, round)
325-
// scalb // Weak
326-
// scalbf // Weak
325+
GOW(scalb, dFdd)
326+
GOW(scalbf, fFff)
327327
// __scalbf_finite
328328
// __scalb_finite
329329
// scalbl // Weak
@@ -336,8 +336,8 @@ GOW(scalbnf, fFfi)
336336
// __signbit
337337
// __signbitf
338338
DATAB(signgam, 8)
339-
// significand // Weak
340-
// significandf // Weak
339+
GOW(significand, dFd)
340+
GOW(significandf, fFf)
341341
// significandl // Weak
342342
GOW(sin, dFd)
343343
GOW(sincos, vFdpp)

src/wrapped/wrappedpam.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,68 @@
1111
#include "bridge.h"
1212
#include "librarian/library_private.h"
1313
#include "x64emu.h"
14+
#include "emu/x64emu_private.h"
15+
#include "callback.h"
16+
#include "librarian.h"
17+
#include "box64context.h"
18+
#include "emu/x64emu_private.h"
19+
#include "myalign.h"
1420

1521
const char* pamName = "libpam.so.0";
1622
#define LIBNAME pam
1723

24+
#define ADDED_FUNCTIONS()
25+
26+
#include "generated/wrappedpamtypes.h"
27+
28+
#include "wrappercallback.h"
29+
30+
typedef struct my_pam_conv_s {
31+
int conv_version;
32+
void* (*conv)(int num_msg, void** msg, void** resp, void* appdata_ptr);
33+
void* appdata_ptr;
34+
} my_pam_conv_t;
35+
36+
#define SUPER() \
37+
GO(0) \
38+
GO(1) \
39+
GO(2) \
40+
GO(3) \
41+
GO(4)
42+
43+
#define GO(A) \
44+
static uintptr_t my_pam_conv_conv_##A = 0; \
45+
static void* my_pam_conv_convfct##A(int num_msg, void** msg, void** resp, void* appdata_ptr) \
46+
{ \
47+
return (void*)RunFunctionFmt(my_pam_conv_conv_##A, "ippp", num_msg, msg, resp, appdata_ptr); \
48+
}
49+
SUPER()
50+
#undef GO
51+
static void* find_pam_conv_Fct(void* fct)
52+
{
53+
if (!fct) return NULL;
54+
if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
55+
#define GO(A) \
56+
if (my_pam_conv_conv_##A == (uintptr_t)fct) return my_pam_conv_convfct##A;
57+
SUPER()
58+
#undef GO
59+
#define GO(A) \
60+
if (my_pam_conv_conv_##A == 0) { \
61+
my_pam_conv_conv_##A = (uintptr_t)fct; \
62+
return my_pam_conv_convfct##A; \
63+
}
64+
SUPER()
65+
#undef GO
66+
printf_log(LOG_NONE, "Warning, no more slot for pam conv callback\n");
67+
return NULL;
68+
}
69+
70+
EXPORT int my_pam_start(x64emu_t* emu, void* service_name, void* user, my_pam_conv_t* pam_conversation, void** pamh)
71+
{
72+
void* conv = NULL;
73+
if (pam_conversation)
74+
conv = find_pam_conv_Fct(pam_conversation->conv);
75+
return my->pam_start(service_name, user, conv ? &(my_pam_conv_t) { pam_conversation->conv_version, conv, pam_conversation->appdata_ptr } : NULL, pamh);
76+
}
77+
1878
#include "wrappedlib_init.h"

src/wrapped/wrappedpam_private.h

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
11
#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
2-
#error meh!
2+
#error Meh...
33
#endif
44

5-
//GO(pam_acct_mgmt,
6-
//GO(pam_authenticate,
7-
//GO(pam_chauthtok,
8-
//GO(pam_close_session,
9-
//GO(pam_end,
10-
//GO(pam_fail_delay,
11-
//GO(pam_get_authtok,
12-
//GO(pam_get_authtok_noverify,
13-
//GO(pam_get_authtok_verify,
14-
//GO(pam_get_data,
15-
//GO(pam_getenv,
16-
//GO(pam_getenvlist,
17-
//GO(pam_get_item,
18-
//GO(pam_get_user,
19-
//GO(pam_modutil_audit_write,
20-
//GO(pam_modutil_check_user_in_passwd,
21-
//GO(pam_modutil_drop_priv,
22-
//GO(pam_modutil_getgrgid,
23-
//GO(pam_modutil_getgrnam,
24-
//GO(pam_modutil_getlogin,
25-
//GO(pam_modutil_getpwnam,
26-
//GO(pam_modutil_getpwuid,
27-
//GO(pam_modutil_getspnam,
28-
//GO(pam_modutil_read,
29-
//GO(pam_modutil_regain_priv,
30-
//GO(pam_modutil_sanitize_helper_fds,
31-
//GO(pam_modutil_search_key,
32-
//GO(pam_modutil_user_in_group_nam_gid,
33-
//GO(pam_modutil_user_in_group_nam_nam,
34-
//GO(pam_modutil_user_in_group_uid_gid,
35-
//GO(pam_modutil_user_in_group_uid_nam,
36-
//GO(pam_modutil_write,
37-
//GO(pam_open_session,
38-
//GO(pam_prompt,
39-
//GO(pam_putenv,
40-
//GO(pam_setcred,
41-
//GO(pam_set_data,
42-
//GO(pam_set_item,
43-
//GO(pam_start,
44-
//GO(pam_start_confdir,
45-
//GO(pam_strerror,
46-
//GO(pam_syslog,
47-
//GO(pam_vprompt,
48-
//GO(pam_vsyslog,
5+
GO(pam_acct_mgmt, iFpi)
6+
GO(pam_authenticate, iFpi)
7+
GO(pam_chauthtok, iFpi)
8+
GO(pam_close_session, iFpi)
9+
GO(pam_end, iFpi)
10+
GO(pam_fail_delay, iFpu)
11+
GO(pam_get_authtok, iFpipp)
12+
GO(pam_get_authtok_noverify, iFppp)
13+
GO(pam_get_authtok_verify, iFppp)
14+
GO(pam_get_data, iFppp)
15+
GO(pam_getenv, pFpp)
16+
GO(pam_getenvlist, pFp)
17+
GO(pam_get_item, iFpip)
18+
GO(pam_get_user, iFppp)
19+
GO(pam_modutil_audit_write, iFpipi)
20+
GO(pam_modutil_check_user_in_passwd, iFppp)
21+
GO(pam_modutil_drop_priv, iFppp)
22+
GO(pam_modutil_getgrgid, pFpu)
23+
GO(pam_modutil_getgrnam, pFpp)
24+
GO(pam_modutil_getlogin, pFp)
25+
GO(pam_modutil_getpwnam, pFpp)
26+
GO(pam_modutil_getpwuid, pFpu)
27+
GO(pam_modutil_getspnam, pFpp)
28+
GO(pam_modutil_read, iFipi)
29+
GO(pam_modutil_regain_priv, iFpp)
30+
GO(pam_modutil_sanitize_helper_fds, iFpuuu)
31+
GO(pam_modutil_search_key, pFppp)
32+
GO(pam_modutil_user_in_group_nam_gid, iFppu)
33+
GO(pam_modutil_user_in_group_nam_nam, iFppp)
34+
GO(pam_modutil_user_in_group_uid_gid, iFpuu)
35+
GO(pam_modutil_user_in_group_uid_nam, iFpup)
36+
GO(pam_modutil_write, iFipi)
37+
GO(pam_open_session, iFpi)
38+
// GOM(pam_prompt, iFEpippV)
39+
GO(pam_putenv, iFpp)
40+
GO(pam_setcred, iFpi)
41+
// GOM(pam_set_data, iFEpppp)
42+
GO(pam_set_item, iFpip)
43+
GOM(pam_start, iFEpppp)
44+
// GOM(pam_start_confdir, iFEppppp)
45+
GO(pam_strerror, pFpi)
46+
// GOM(pam_syslog, vFEpipV)
47+
// GOM(pam_vprompt, iFEpippA)
48+
// GOM(pam_vsyslog, vFEpipA)

0 commit comments

Comments
 (0)