Impact sur les binaires C récemment compilés :
Lorsque le code est recompilé, les pratiques de développement standard doivent tenir compte des problèmes liés aux modifications des types uid[lowbar]t et gid[lowbar]t.
Les sections qui risquent de poser des problèmes sont les suivantes :
1 #include <unistd.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 int
6 main(void)
7 {
8 uid_t negone = -1;
9
10 if (getuid() < 0)
11 exit(1);
12
13 (void) setreuid(negone, getuid());
14
15 (void) printf("%ld\n", getuid());
16
17 return (0);
18 }
|
-
L'avertissement suivant est généré par le compilateur Studio 11 de Sun :
"uid.c", line 8: warning: initializer does not fit or is out of range: -1"
|
-
Les avertissements suivants sont générés par Studio 11 lint :
((8) warning: constant truncated by assignment
|
(8) warning: initializer will be sign-extended: -1
|
(10) warning: suspicious comparison of unsigned with 0: op "<"
|
function argument ( number ) type inconsistent with format
|
-
Les avertissements suivants sont générés par gcc -Wall -Wextra :
uid.c:10: warning: comparison of unsigned expression < 0 is always false
|
uid.c:15: warning: long int format, uid_t arg (arg 2)
|
Remarque – Les binaires C récemment compilés peuvent être mélangés à des anciens objets et à des objets système. La taille du type n'a pas changé.