|
@@ -1,307 +0,0 @@
|
|
|
-From 5956cf525bfb53ed0c5cade3b58f18fde4f85c42 Mon Sep 17 00:00:00 2001
|
|
|
-From: TBK <tbk@jjtc.eu>
|
|
|
-Date: Wed, 26 Feb 2020 00:24:39 +0100
|
|
|
-Subject: [PATCH] libpamc: Use ISO C99 uintX_t types instead of u_intX_t
|
|
|
-
|
|
|
-u_intX_t is a glibcism this fixes the issue of compiling against musl libc.
|
|
|
-
|
|
|
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
-[Retrieved from:
|
|
|
-https://github.com/linux-pam/linux-pam/commit/5956cf525bfb53ed0c5cade3b58f18fde4f85c42]
|
|
|
----
|
|
|
- libpamc/include/security/pam_client.h | 21 ++++++------
|
|
|
- libpamc/libpamc.h | 1 +
|
|
|
- libpamc/pamc_converse.c | 8 ++---
|
|
|
- libpamc/test/regress/test.libpamc.c | 3 +-
|
|
|
- modules/pam_timestamp/sha1.c | 46 +++++++++++++--------------
|
|
|
- modules/pam_timestamp/sha1.h | 5 +--
|
|
|
- 6 files changed, 44 insertions(+), 40 deletions(-)
|
|
|
-
|
|
|
-diff --git a/libpamc/include/security/pam_client.h b/libpamc/include/security/pam_client.h
|
|
|
-index 86672a2e..41f83da6 100644
|
|
|
---- a/libpamc/include/security/pam_client.h
|
|
|
-+++ b/libpamc/include/security/pam_client.h
|
|
|
-@@ -16,6 +16,7 @@ extern "C" {
|
|
|
- #include <unistd.h>
|
|
|
- #include <string.h>
|
|
|
- #include <stdio.h>
|
|
|
-+#include <stdint.h>
|
|
|
- #include <sys/types.h>
|
|
|
-
|
|
|
- /* opaque agent handling structure */
|
|
|
-@@ -23,7 +24,7 @@ extern "C" {
|
|
|
- typedef struct pamc_handle_s *pamc_handle_t;
|
|
|
-
|
|
|
- /* binary prompt structure pointer */
|
|
|
--typedef struct { u_int32_t length; u_int8_t control; } *pamc_bp_t;
|
|
|
-+typedef struct { uint32_t length; uint8_t control; } *pamc_bp_t;
|
|
|
-
|
|
|
- /*
|
|
|
- * functions provided by libpamc
|
|
|
-@@ -90,10 +91,10 @@ char **pamc_list_agents(pamc_handle_t pch);
|
|
|
- # define PAM_BP_FREE free
|
|
|
- #endif /* PAM_BP_FREE */
|
|
|
-
|
|
|
--#define __PAM_BP_WOCTET(x,y) (*((y) + (u_int8_t *)(x)))
|
|
|
--#define __PAM_BP_ROCTET(x,y) (*((y) + (const u_int8_t *)(x)))
|
|
|
-+#define __PAM_BP_WOCTET(x,y) (*((y) + (uint8_t *)(x)))
|
|
|
-+#define __PAM_BP_ROCTET(x,y) (*((y) + (const uint8_t *)(x)))
|
|
|
-
|
|
|
--#define PAM_BP_MIN_SIZE (sizeof(u_int32_t) + sizeof(u_int8_t))
|
|
|
-+#define PAM_BP_MIN_SIZE (sizeof(uint32_t) + sizeof(uint8_t))
|
|
|
- #define PAM_BP_MAX_LENGTH 0x20000 /* an advisory limit */
|
|
|
- #define PAM_BP_WCONTROL(x) (__PAM_BP_WOCTET(x,4))
|
|
|
- #define PAM_BP_RCONTROL(x) (__PAM_BP_ROCTET(x,4))
|
|
|
-@@ -102,8 +103,8 @@ char **pamc_list_agents(pamc_handle_t pch);
|
|
|
- (__PAM_BP_ROCTET(x,2)<< 8)+ \
|
|
|
- (__PAM_BP_ROCTET(x,3) ))
|
|
|
- #define PAM_BP_LENGTH(x) (PAM_BP_SIZE(x) - PAM_BP_MIN_SIZE)
|
|
|
--#define PAM_BP_WDATA(x) (PAM_BP_MIN_SIZE + (u_int8_t *) (x))
|
|
|
--#define PAM_BP_RDATA(x) (PAM_BP_MIN_SIZE + (const u_int8_t *) (x))
|
|
|
-+#define PAM_BP_WDATA(x) (PAM_BP_MIN_SIZE + (uint8_t *) (x))
|
|
|
-+#define PAM_BP_RDATA(x) (PAM_BP_MIN_SIZE + (const uint8_t *) (x))
|
|
|
-
|
|
|
- /* Note, this macro always '\0' terminates renewed packets */
|
|
|
-
|
|
|
-@@ -111,13 +112,13 @@ char **pamc_list_agents(pamc_handle_t pch);
|
|
|
- do { \
|
|
|
- if ((old_p) != NULL) { \
|
|
|
- if (*(old_p)) { \
|
|
|
-- u_int32_t __size; \
|
|
|
-+ uint32_t __size; \
|
|
|
- __size = PAM_BP_SIZE(*(old_p)); \
|
|
|
- memset(*(old_p), 0, __size); \
|
|
|
- PAM_BP_FREE(*(old_p)); \
|
|
|
- } \
|
|
|
- if (cntrl) { \
|
|
|
-- u_int32_t __size; \
|
|
|
-+ uint32_t __size; \
|
|
|
- \
|
|
|
- __size = PAM_BP_MIN_SIZE + data_length; \
|
|
|
- if ((*(old_p) = PAM_BP_CALLOC(1, 1+__size))) { \
|
|
|
-@@ -140,7 +141,7 @@ do { \
|
|
|
- #define PAM_BP_FILL(prmpt, offset, length, data) \
|
|
|
- do { \
|
|
|
- size_t bp_length; \
|
|
|
-- u_int8_t *prompt = (u_int8_t *) (prmpt); \
|
|
|
-+ uint8_t *prompt = (uint8_t *) (prmpt); \
|
|
|
- bp_length = PAM_BP_LENGTH(prompt); \
|
|
|
- if (bp_length < ((length)+(offset))) { \
|
|
|
- PAM_BP_ASSERT("attempt to write over end of prompt"); \
|
|
|
-@@ -151,7 +152,7 @@ do { \
|
|
|
- #define PAM_BP_EXTRACT(prmpt, offset, length, data) \
|
|
|
- do { \
|
|
|
- size_t __bp_length; \
|
|
|
-- const u_int8_t *__prompt = (const u_int8_t *) (prmpt); \
|
|
|
-+ const uint8_t *__prompt = (const uint8_t *) (prmpt); \
|
|
|
- __bp_length = PAM_BP_LENGTH(__prompt); \
|
|
|
- if (((offset) < 0) || (__bp_length < ((length)+(offset))) \
|
|
|
- || ((length) < 0)) { \
|
|
|
-diff --git a/libpamc/libpamc.h b/libpamc/libpamc.h
|
|
|
-index 93c833c6..a22f52ea 100644
|
|
|
---- a/libpamc/libpamc.h
|
|
|
-+++ b/libpamc/libpamc.h
|
|
|
-@@ -16,6 +16,7 @@
|
|
|
- #include <sys/types.h>
|
|
|
- #include <dirent.h>
|
|
|
- #include <sys/wait.h>
|
|
|
-+#include <stdint.h>
|
|
|
- #include <stdlib.h>
|
|
|
- #include <errno.h>
|
|
|
- #include <ctype.h>
|
|
|
-diff --git a/libpamc/pamc_converse.c b/libpamc/pamc_converse.c
|
|
|
-index bb9c6dfd..f8f60edf 100644
|
|
|
---- a/libpamc/pamc_converse.c
|
|
|
-+++ b/libpamc/pamc_converse.c
|
|
|
-@@ -34,8 +34,8 @@ static int __pamc_select_agent(pamc_handle_t pch, char *agent_id)
|
|
|
-
|
|
|
- int pamc_converse(pamc_handle_t pch, pamc_bp_t *prompt_p)
|
|
|
- {
|
|
|
-- u_int32_t size, offset=0;
|
|
|
-- u_int8_t control, raw[PAM_BP_MIN_SIZE];
|
|
|
-+ uint32_t size, offset=0;
|
|
|
-+ uint8_t control, raw[PAM_BP_MIN_SIZE];
|
|
|
-
|
|
|
- D(("called"));
|
|
|
-
|
|
|
-@@ -110,7 +110,7 @@ int pamc_converse(pamc_handle_t pch, pamc_bp_t *prompt_p)
|
|
|
- /* pump all of the prompt into the agent */
|
|
|
- do {
|
|
|
- int rval = write(pch->current->writer,
|
|
|
-- offset + (const u_int8_t *) (*prompt_p),
|
|
|
-+ offset + (const uint8_t *) (*prompt_p),
|
|
|
- size - offset);
|
|
|
- if (rval == -1) {
|
|
|
- switch (errno) {
|
|
|
-@@ -172,7 +172,7 @@ int pamc_converse(pamc_handle_t pch, pamc_bp_t *prompt_p)
|
|
|
- value from the previous loop */
|
|
|
-
|
|
|
- while (offset < size) {
|
|
|
-- int rval = read(pch->current->reader, offset + (u_int8_t *) *prompt_p,
|
|
|
-+ int rval = read(pch->current->reader, offset + (uint8_t *) *prompt_p,
|
|
|
- size-offset);
|
|
|
-
|
|
|
- if (rval == -1) {
|
|
|
-diff --git a/libpamc/test/regress/test.libpamc.c b/libpamc/test/regress/test.libpamc.c
|
|
|
-index b0fff9c6..4251b4fa 100644
|
|
|
---- a/libpamc/test/regress/test.libpamc.c
|
|
|
-+++ b/libpamc/test/regress/test.libpamc.c
|
|
|
-@@ -5,6 +5,7 @@
|
|
|
- */
|
|
|
-
|
|
|
- #include <stdio.h>
|
|
|
-+#include <stdint.h>
|
|
|
- #include <string.h>
|
|
|
- #include <security/pam_client.h>
|
|
|
- #include <ctype.h>
|
|
|
-@@ -157,7 +158,7 @@ char *create_digest(int length, const char *raw)
|
|
|
- return temp_packet.buffer;
|
|
|
- }
|
|
|
-
|
|
|
--void packet_to_prompt(pamc_bp_t *prompt_p, u_int8_t control,
|
|
|
-+void packet_to_prompt(pamc_bp_t *prompt_p, uint8_t control,
|
|
|
- struct internal_packet *packet)
|
|
|
- {
|
|
|
- PAM_BP_RENEW(prompt_p, control, packet->at);
|
|
|
-diff --git a/modules/pam_timestamp/sha1.c b/modules/pam_timestamp/sha1.c
|
|
|
-index 576b4b41..af3ccb97 100644
|
|
|
---- a/modules/pam_timestamp/sha1.c
|
|
|
-+++ b/modules/pam_timestamp/sha1.c
|
|
|
-@@ -56,34 +56,34 @@ padding[SHA1_BLOCK_SIZE] = {
|
|
|
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
- };
|
|
|
-
|
|
|
--static u_int32_t
|
|
|
--F(u_int32_t b, u_int32_t c, u_int32_t d)
|
|
|
-+static uint32_t
|
|
|
-+F(uint32_t b, uint32_t c, uint32_t d)
|
|
|
- {
|
|
|
- return (b & c) | ((~b) & d);
|
|
|
- }
|
|
|
-
|
|
|
--static u_int32_t
|
|
|
--G(u_int32_t b, u_int32_t c, u_int32_t d)
|
|
|
-+static uint32_t
|
|
|
-+G(uint32_t b, uint32_t c, uint32_t d)
|
|
|
- {
|
|
|
- return b ^ c ^ d;
|
|
|
- }
|
|
|
-
|
|
|
--static u_int32_t
|
|
|
--H(u_int32_t b, u_int32_t c, u_int32_t d)
|
|
|
-+static uint32_t
|
|
|
-+H(uint32_t b, uint32_t c, uint32_t d)
|
|
|
- {
|
|
|
- return (b & c) | (b & d) | (c & d);
|
|
|
- }
|
|
|
-
|
|
|
--static u_int32_t
|
|
|
--RL(u_int32_t n, u_int32_t s)
|
|
|
-+static uint32_t
|
|
|
-+RL(uint32_t n, uint32_t s)
|
|
|
- {
|
|
|
- return (n << s) | (n >> (32 - s));
|
|
|
- }
|
|
|
-
|
|
|
--static u_int32_t
|
|
|
--sha1_round(u_int32_t (*FUNC)(u_int32_t, u_int32_t, u_int32_t),
|
|
|
-- u_int32_t a, u_int32_t b, u_int32_t c, u_int32_t d, u_int32_t e,
|
|
|
-- u_int32_t i, u_int32_t n)
|
|
|
-+static uint32_t
|
|
|
-+sha1_round(uint32_t (*FUNC)(uint32_t, uint32_t, uint32_t),
|
|
|
-+ uint32_t a, uint32_t b, uint32_t c, uint32_t d, uint32_t e,
|
|
|
-+ uint32_t i, uint32_t n)
|
|
|
- {
|
|
|
- return RL(a, 5) + FUNC(b, c, d) + e + i + n;
|
|
|
- }
|
|
|
-@@ -100,10 +100,10 @@ sha1_init(struct sha1_context *ctx)
|
|
|
- }
|
|
|
-
|
|
|
- static void
|
|
|
--sha1_process(struct sha1_context *ctx, u_int32_t buffer[SHA1_BLOCK_SIZE / 4])
|
|
|
-+sha1_process(struct sha1_context *ctx, uint32_t buffer[SHA1_BLOCK_SIZE / 4])
|
|
|
- {
|
|
|
-- u_int32_t a, b, c, d, e, temp;
|
|
|
-- u_int32_t data[80];
|
|
|
-+ uint32_t a, b, c, d, e, temp;
|
|
|
-+ uint32_t data[80];
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < 16; i++) {
|
|
|
-@@ -150,14 +150,14 @@ void
|
|
|
- sha1_update(struct sha1_context *ctx, const unsigned char *data, size_t length)
|
|
|
- {
|
|
|
- size_t i = 0, l = length, c, t;
|
|
|
-- u_int32_t count = 0;
|
|
|
-+ uint32_t count = 0;
|
|
|
-
|
|
|
- /* Process any pending + data blocks. */
|
|
|
- while (l + ctx->pending_count >= SHA1_BLOCK_SIZE) {
|
|
|
- c = ctx->pending_count;
|
|
|
- t = SHA1_BLOCK_SIZE - c;
|
|
|
- memcpy(ctx->pending + c, &data[i], t);
|
|
|
-- sha1_process(ctx, (u_int32_t*) ctx->pending);
|
|
|
-+ sha1_process(ctx, (uint32_t*) ctx->pending);
|
|
|
- i += t;
|
|
|
- l -= t;
|
|
|
- ctx->pending_count = 0;
|
|
|
-@@ -188,7 +188,7 @@ sha1_output(struct sha1_context *ctx, unsigned char *out)
|
|
|
-
|
|
|
- /* Output the sum. */
|
|
|
- if (out != NULL) {
|
|
|
-- u_int32_t c;
|
|
|
-+ uint32_t c;
|
|
|
- memcpy(&ctx2, ctx, sizeof(ctx2));
|
|
|
-
|
|
|
- /* Pad this block. */
|
|
|
-@@ -197,10 +197,10 @@ sha1_output(struct sha1_context *ctx, unsigned char *out)
|
|
|
- padding, SHA1_BLOCK_SIZE - c);
|
|
|
-
|
|
|
- /* Do we need to process two blocks now? */
|
|
|
-- if (c >= (SHA1_BLOCK_SIZE - (sizeof(u_int32_t) * 2))) {
|
|
|
-+ if (c >= (SHA1_BLOCK_SIZE - (sizeof(uint32_t) * 2))) {
|
|
|
- /* Process this block. */
|
|
|
- sha1_process(&ctx2,
|
|
|
-- (u_int32_t*) ctx2.pending);
|
|
|
-+ (uint32_t*) ctx2.pending);
|
|
|
- /* Set up another block. */
|
|
|
- ctx2.pending_count = 0;
|
|
|
- memset(ctx2.pending, 0, SHA1_BLOCK_SIZE);
|
|
|
-@@ -218,10 +218,10 @@ sha1_output(struct sha1_context *ctx, unsigned char *out)
|
|
|
- ctx2.counts[0] = htonl(ctx2.counts[0]);
|
|
|
- ctx2.counts[1] = htonl(ctx2.counts[1]);
|
|
|
- memcpy(ctx2.pending + 56,
|
|
|
-- &ctx2.counts[1], sizeof(u_int32_t));
|
|
|
-+ &ctx2.counts[1], sizeof(uint32_t));
|
|
|
- memcpy(ctx2.pending + 60,
|
|
|
-- &ctx2.counts[0], sizeof(u_int32_t));
|
|
|
-- sha1_process(&ctx2, (u_int32_t*) ctx2.pending);
|
|
|
-+ &ctx2.counts[0], sizeof(uint32_t));
|
|
|
-+ sha1_process(&ctx2, (uint32_t*) ctx2.pending);
|
|
|
-
|
|
|
- /* Output the data. */
|
|
|
- out[ 3] = (ctx2.a >> 0) & 0xff;
|
|
|
-diff --git a/modules/pam_timestamp/sha1.h b/modules/pam_timestamp/sha1.h
|
|
|
-index 667b87ca..a445e4e6 100644
|
|
|
---- a/modules/pam_timestamp/sha1.h
|
|
|
-+++ b/modules/pam_timestamp/sha1.h
|
|
|
-@@ -38,6 +38,7 @@
|
|
|
- #ifndef pam_timestamp_sha1_h
|
|
|
- #define pam_timestamp_sha1_h
|
|
|
-
|
|
|
-+#include <stdint.h>
|
|
|
- #include <sys/types.h>
|
|
|
-
|
|
|
- #define SHA1_BLOCK_SIZE 64
|
|
|
-@@ -45,9 +46,9 @@
|
|
|
- struct sha1_context {
|
|
|
- size_t count;
|
|
|
- unsigned char pending[SHA1_BLOCK_SIZE];
|
|
|
-- u_int32_t counts[2];
|
|
|
-+ uint32_t counts[2];
|
|
|
- size_t pending_count;
|
|
|
-- u_int32_t a, b, c, d, e;
|
|
|
-+ uint32_t a, b, c, d, e;
|
|
|
- };
|
|
|
-
|
|
|
- #define SHA1_OUTPUT_SIZE 20
|