summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/aio/lio_listio.c2
-rw-r--r--src/crypt/crypt_des.c19
-rw-r--r--src/crypt/crypt_md5.c2
-rw-r--r--src/crypt/crypt_sha256.c2
-rw-r--r--src/crypt/crypt_sha512.c2
-rw-r--r--src/ldso/dynlink.c18
-rw-r--r--src/regex/regexec.c3
7 files changed, 29 insertions, 19 deletions
diff --git a/src/aio/lio_listio.c b/src/aio/lio_listio.c
index 532b17ce..64a6ebc1 100644
--- a/src/aio/lio_listio.c
+++ b/src/aio/lio_listio.c
@@ -109,7 +109,7 @@ int lio_listio(int mode, struct aiocb *restrict const *restrict cbs, int cnt, st
if (mode == LIO_WAIT) {
ret = lio_wait(st);
free(st);
- return 0;
+ return ret;
}
if (st) {
diff --git a/src/crypt/crypt_des.c b/src/crypt/crypt_des.c
index 4454a130..dc95dcaa 100644
--- a/src/crypt/crypt_des.c
+++ b/src/crypt/crypt_des.c
@@ -879,10 +879,7 @@ static char *_crypt_extended_r_uut(const char *_key, const char *_setting, char
const unsigned char *key = (const unsigned char *)_key;
const unsigned char *setting = (const unsigned char *)_setting;
struct expanded_key ekey;
- union {
- unsigned char c[8];
- uint32_t i[2];
- } keybuf;
+ unsigned char keybuf[8];
unsigned char *p, *q;
uint32_t count, salt, l, r0, r1;
unsigned int i;
@@ -891,13 +888,13 @@ static char *_crypt_extended_r_uut(const char *_key, const char *_setting, char
* Copy the key, shifting each character left by one bit and padding
* with zeroes.
*/
- q = keybuf.c;
- while (q <= &keybuf.c[sizeof(keybuf.c) - 1]) {
+ q = keybuf;
+ while (q <= &keybuf[sizeof(keybuf) - 1]) {
*q++ = *key << 1;
if (*key)
key++;
}
- des_setkey(keybuf.c, &ekey);
+ des_setkey(keybuf, &ekey);
if (*setting == _PASSWORD_EFMT1) {
/*
@@ -925,14 +922,14 @@ static char *_crypt_extended_r_uut(const char *_key, const char *_setting, char
/*
* Encrypt the key with itself.
*/
- des_cipher(keybuf.c, keybuf.c, 1, 0, &ekey);
+ des_cipher(keybuf, keybuf, 1, 0, &ekey);
/*
* And XOR with the next 8 characters of the key.
*/
- q = keybuf.c;
- while (q <= &keybuf.c[sizeof(keybuf.c) - 1] && *key)
+ q = keybuf;
+ while (q <= &keybuf[sizeof(keybuf) - 1] && *key)
*q++ ^= *key++ << 1;
- des_setkey(keybuf.c, &ekey);
+ des_setkey(keybuf, &ekey);
}
memcpy(output, setting, 9);
diff --git a/src/crypt/crypt_md5.c b/src/crypt/crypt_md5.c
index 02f22444..70ab8b99 100644
--- a/src/crypt/crypt_md5.c
+++ b/src/crypt/crypt_md5.c
@@ -118,7 +118,7 @@ static void md5_init(struct md5 *s)
s->h[3] = 0x10325476;
}
-static void md5_sum(struct md5 *s, uint8_t md[16])
+static void md5_sum(struct md5 *s, uint8_t *md)
{
int i;
diff --git a/src/crypt/crypt_sha256.c b/src/crypt/crypt_sha256.c
index 076e4b16..e01a208b 100644
--- a/src/crypt/crypt_sha256.c
+++ b/src/crypt/crypt_sha256.c
@@ -119,7 +119,7 @@ static void sha256_init(struct sha256 *s)
s->h[7] = 0x5be0cd19;
}
-static void sha256_sum(struct sha256 *s, uint8_t md[20])
+static void sha256_sum(struct sha256 *s, uint8_t *md)
{
int i;
diff --git a/src/crypt/crypt_sha512.c b/src/crypt/crypt_sha512.c
index 0f1de814..8325d77c 100644
--- a/src/crypt/crypt_sha512.c
+++ b/src/crypt/crypt_sha512.c
@@ -136,7 +136,7 @@ static void sha512_init(struct sha512 *s)
s->h[7] = 0x5be0cd19137e2179ULL;
}
-static void sha512_sum(struct sha512 *s, uint8_t md[20])
+static void sha512_sum(struct sha512 *s, uint8_t *md)
{
int i;
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 935367e3..782e979f 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -1091,6 +1091,15 @@ end:
return p;
}
+static int invalid_dso_handle(struct dso *h)
+{
+ struct dso *p;
+ for (p=head; p; p=p->next) if (h==p) return 0;
+ snprintf(errbuf, sizeof errbuf, "Invalid library handle %p", (void *)h);
+ errflag = 1;
+ return 1;
+}
+
static void *do_dlsym(struct dso *p, const char *s, void *ra)
{
size_t i;
@@ -1110,6 +1119,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
return __tls_get_addr((size_t []){def.dso->tls_id, def.sym->st_value});
return def.dso->base + def.sym->st_value;
}
+ if (invalid_dso_handle(p)) return 0;
if (p->ghashtab) {
gh = gnu_hash(s);
sym = gnu_lookup(s, gh, p);
@@ -1236,6 +1246,12 @@ int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void
return ret;
}
#else
+static int invalid_dso_handle(struct dso *h)
+{
+ snprintf(errbuf, sizeof errbuf, "Invalid library handle %p", (void *)h);
+ errflag = 1;
+ return 1;
+}
void *dlopen(const char *file, int mode)
{
return 0;
@@ -1259,5 +1275,5 @@ char *dlerror()
int dlclose(void *p)
{
- return 0;
+ return invalid_dso_handle(p);
}
diff --git a/src/regex/regexec.c b/src/regex/regexec.c
index 855cef57..674c5907 100644
--- a/src/regex/regexec.c
+++ b/src/regex/regexec.c
@@ -596,7 +596,6 @@ tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
started from. */
int next_c_start;
const char *str_byte_start;
- int pos_start = -1;
#ifdef TRE_MBSTATE
mbstate_t mbstate_start;
#endif /* TRE_MBSTATE */
@@ -676,9 +675,7 @@ tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
}
state = NULL;
- pos = pos_start;
GET_NEXT_WCHAR();
- pos_start = pos;
next_c_start = next_c;
str_byte_start = str_byte;
#ifdef TRE_MBSTATE