Skip to content

Commit 85978ac

Browse files
committed
Avoid string overflow for mode strings of size at most 10 chars plus one byte
string termination (`\0`). Dumb down the sharelink mode iterator to keep it simple. Adjust prefix for shared PAM and NSS log line helper to clarify that. Otherwise we get `pam_mig` log entries even for key login, which never hits PAM.
1 parent 41b3fb0 commit 85978ac

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

mig/src/include/auth/migauth.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@
170170
fprintf(stderr, #priority ": " __FILE__"("TOSTRING(__LINE__)"): " format, ##__VA_ARGS__)
171171
#else /* DEBUG_LOG_STDERR */
172172
#define WRITELOGMESSAGE(priority, format, ...) \
173-
openlog("pam_mig", LOG_PID, LOG_AUTHPRIV); \
173+
openlog("nss-pam_mig", LOG_PID, LOG_AUTHPRIV); \
174174
syslog(priority, #priority ": " __FILE__"("TOSTRING(__LINE__)"): " format, ##__VA_ARGS__);
175175
#endif /* DEBUG_LOG_STDERR */
176176
#else /* DEBUG || DEBUG_LOG_STDERR */
@@ -186,7 +186,7 @@
186186
*/
187187
#define WRITELOGMESSAGE(priority, ...) \
188188
if (priority != LOG_DEBUG) { \
189-
openlog("pam_mig", LOG_PID, LOG_AUTHPRIV); \
189+
openlog("nss-pam_mig", LOG_PID, LOG_AUTHPRIV); \
190190
syslog(priority, ##__VA_ARGS__); \
191191
}
192192
#endif /* DEBUG || DEBUG_LOG_STDERR */

mig/src/libnss-mig/libnss_mig.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ _nss_mig_getpwnam_r(const char *name,
183183
if (keep_trying && name_len == get_sharelink_length()) {
184184
WRITELOGMESSAGE(LOG_DEBUG, "Checking for sharelink: %s\n", name);
185185

186-
char sharelink_modes[][10] = { SHARELINK_RW_DIR, SHARELINK_RO_DIR, SHARELINK_WO_DIR };
187-
for (size_t i = 0; i < sizeof(sharelink_modes) / sizeof(sharelink_modes[0]); i++)
186+
char sharelink_modes[3][11] = { SHARELINK_RW_DIR, SHARELINK_RO_DIR, SHARELINK_WO_DIR };
187+
for (uint i = 0; i < 3; i++)
188188
{
189189

190190
memset(pathbuf, 0, PATH_BUF_LEN);

mig/src/libpam-mig/libpam_mig.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -715,8 +715,8 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t * pamh, int flags,
715715
if (strlen(pUsername) == get_sharelink_length()) {
716716
char share_path[MAX_PATH_LENGTH];
717717

718-
char sharelink_modes[][10] = { SHARELINK_RW_DIR, SHARELINK_RO_DIR, SHARELINK_WO_DIR };
719-
for (size_t i = 0; i < sizeof(sharelink_modes) / sizeof(sharelink_modes[0]); i++)
718+
char sharelink_modes[3][11] = { SHARELINK_RW_DIR, SHARELINK_RO_DIR, SHARELINK_WO_DIR };
719+
for (uint i = 0; i < 3; i++)
720720
{
721721

722722
memset(share_path, 0, MAX_PATH_LENGTH);

0 commit comments

Comments
 (0)