fix warnings in 9.6, 10, 11's contrib when compiling without openssl

Поиск
Список
Период
Сортировка
От Anton Voloshin
Тема fix warnings in 9.6, 10, 11's contrib when compiling without openssl
Дата
Msg-id f3eb8956-7b80-faf0-2538-a518babd11ca@postgrespro.ru
обсуждение исходный текст
Ответы Re: fix warnings in 9.6, 10, 11's contrib when compiling without openssl  (Daniel Gustafsson <daniel@yesql.se>)
Список pgsql-hackers
Hello,

after plain ./configure without options (including noticeable absence of 
--with-openssl) and make,
make -C contrib COPT=-Werror gives error with gcc-11 on REL_9_6_STABLE, 
REL_10_STABLE or REL_11_STABLE.

The warning/error is about misleading indent in 
contrib/pgcrypto/imath.c's CLAMP macro:

imath.c: In function ‘mp_int_add’:
imath.c:133:1: error: this ‘while’ clause does not guard... 
[-Werror=misleading-indentation]
   133 | while(uz_ > 1 && (*dz_-- == 0)) --uz_;MP_USED(z_)=uz_;}while(0)
       | ^~~~~
imath.c:670:17: note: in expansion of macro ‘CLAMP’
   670 |                 CLAMP(c);
       |                 ^~~~~
In file included from imath.c:34:
imath.h:68:26: note: ...this statement, but the latter is misleadingly 
indented as if it were guarded by the ‘while’
    68 | #define MP_USED(Z)       ((Z)->used)
       |                          ^
imath.c:133:39: note: in expansion of macro ‘MP_USED’
   133 | while(uz_ > 1 && (*dz_-- == 0)) --uz_;MP_USED(z_)=uz_;}while(0)
       |                                       ^~~~~~~
imath.c:670:17: note: in expansion of macro ‘CLAMP’
   670 |                 CLAMP(c);
       |                 ^~~~~

pgcrypto-fix-imath-clamp-warning.patch, attached, is a suggested minimal 
fix:
diff --git a/contrib/pgcrypto/imath.c b/contrib/pgcrypto/imath.c
index b94a51b81a4..801b843cbe3 100644
--- a/contrib/pgcrypto/imath.c
+++ b/contrib/pgcrypto/imath.c
@@ -130,7 +130,8 @@ do{T *u_=(A),*v_=u_+(N)-1;while(u_<v_){T 
xch=*u_;*u_++=*v_;*v_--=xch;}}while(0)
  #else
  #define CLAMP(Z) \
  do{mp_int z_=(Z);mp_size uz_=MP_USED(z_);mp_digit 
*dz_=MP_DIGITS(z_)+uz_-1;\
-while(uz_ > 1 && (*dz_-- == 0)) --uz_;MP_USED(z_)=uz_;}while(0)
+while(uz_ > 1 && (*dz_-- == 0)) --uz_;\
+MP_USED(z_)=uz_;}while(0)
  #endif

  #undef MIN

The same patch works for all 9.6, 10 and 11. It's not needed in 12 or 
later, they compile without warnings just fine even without --with-openssl.

In addition, 9.6 (unlike 10 and 11) gives four "array-parameter=" 
warnings about contrib/pgcrypto/sha2.c:

sha2.c:552:20: error: argument 1 of type ‘uint8[]’ {aka ‘unsigned 
char[]’} with mismatched bound [-Werror=array-parameter=]
   552 | SHA256_Final(uint8 digest[], SHA256_CTX *context)
       |              ~~~~~~^~~~~~~~
In file included from sha2.c:44:
sha2.h:93:30: note: previously declared as ‘uint8[32]’ {aka ‘unsigned 
char[32]’}
    93 | void            SHA256_Final(uint8[SHA256_DIGEST_LENGTH], 
SHA256_CTX *);
       |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~

and the same for SHA{512,384,224}_Final.

pgcrypto-fix-sha2-warning.patch, attached, is a suggested minimal fix 
for that:
  void
-SHA256_Final(uint8 digest[], SHA256_CTX *context)
+SHA256_Final(uint8 digest[SHA256_DIGEST_LENGTH], SHA256_CTX *context)
  {
etc.

Please consider fixing those warnings.

-- 
Anton Voloshin
Postgres Professional, The Russian Postgres Company
https://postgrespro.ru

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: vignesh C
Дата:
Сообщение: Re: Failed transaction statistics to measure the logical replication progress
Следующее
От: chris
Дата:
Сообщение: Confused with PostgreSQL on Synology NAS