Explorar o código

fix inefficient choice of tlsdesc function due to off-by-one

tls_id is one-based, whereas [static_]tls_cnt is a count, so
comparison for checking that a given tls_id is dynamic rather than
static needs to use strict inequality.
Rich Felker %!s(int64=6) %!d(string=hai) anos
pai
achega
5fdccbcd8f
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      ldso/dynlink.c

+ 1 - 1
ldso/dynlink.c

@@ -438,7 +438,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
 #endif
 		case REL_TLSDESC:
 			if (stride<3) addend = reloc_addr[1];
-			if (runtime && def.dso->tls_id >= static_tls_cnt) {
+			if (runtime && def.dso->tls_id > static_tls_cnt) {
 				struct td_index *new = malloc(sizeof *new);
 				if (!new) {
 					error(