diff options
Diffstat (limited to 'lib/libc/locale/collate.c')
| -rw-r--r-- | lib/libc/locale/collate.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/libc/locale/collate.c b/lib/libc/locale/collate.c index c67f7bcd646e..c992d2299ab7 100644 --- a/lib/libc/locale/collate.c +++ b/lib/libc/locale/collate.c @@ -140,7 +140,9 @@ __collate_load_tables_l(const char *encoding, struct xlocale_collate *table) (void) _close(fd); return (_LDP_ERROR); } - if (sbuf.st_size < (COLLATE_STR_LEN + sizeof (info))) { + if (sbuf.st_size < (COLLATE_FMT_VERSION_LEN + + XLOCALE_DEF_VERSION_LEN + + sizeof (info))) { (void) _close(fd); errno = EINVAL; return (_LDP_ERROR); @@ -151,12 +153,14 @@ __collate_load_tables_l(const char *encoding, struct xlocale_collate *table) return (_LDP_ERROR); } - if (strncmp(TMP, COLLATE_VERSION, COLLATE_STR_LEN) != 0) { + if (strncmp(TMP, COLLATE_FMT_VERSION, COLLATE_FMT_VERSION_LEN) != 0) { (void) munmap(map, sbuf.st_size); errno = EINVAL; return (_LDP_ERROR); } - TMP += COLLATE_STR_LEN; + TMP += COLLATE_FMT_VERSION_LEN; + strlcat(table->header.version, TMP, sizeof (table->header.version)); + TMP += XLOCALE_DEF_VERSION_LEN; info = (void *)TMP; TMP += sizeof (*info); |
