Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit52ce205

Browse files
committed
Add missing format attributes
Add __attribute__ decorations for printf format checking to the places thatwere missing them. Fix the resulting warnings. Add-Wmissing-format-attribute to the standard set of warnings for GCC, so thesedon't happen again.The warning fixes here are relatively harmless. The one serious problemdiscovered by this was already committed earlier incf15fb5.
1 parent96a8aed commit52ce205

File tree

13 files changed

+87
-18
lines changed

13 files changed

+87
-18
lines changed

‎configure

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4123,6 +4123,66 @@ if test x"$pgac_cv_prog_cc_cflags__Wendif_labels" = x"yes"; then
41234123
CFLAGS="$CFLAGS -Wendif-labels"
41244124
fi
41254125

4126+
{ $as_echo "$as_me:$LINENO: checking whether $CC supports -Wmissing-format-attribute" >&5
4127+
$as_echo_n "checking whether $CC supports -Wmissing-format-attribute... " >&6; }
4128+
if test "${pgac_cv_prog_cc_cflags__Wmissing_format_attribute+set}" = set; then
4129+
$as_echo_n "(cached) " >&6
4130+
else
4131+
pgac_save_CFLAGS=$CFLAGS
4132+
CFLAGS="$pgac_save_CFLAGS -Wmissing-format-attribute"
4133+
ac_save_c_werror_flag=$ac_c_werror_flag
4134+
ac_c_werror_flag=yes
4135+
cat >conftest.$ac_ext <<_ACEOF
4136+
/* confdefs.h. */
4137+
_ACEOF
4138+
cat confdefs.h >>conftest.$ac_ext
4139+
cat >>conftest.$ac_ext <<_ACEOF
4140+
/* end confdefs.h. */
4141+
4142+
int
4143+
main ()
4144+
{
4145+
4146+
;
4147+
return 0;
4148+
}
4149+
_ACEOF
4150+
rm -f conftest.$ac_objext
4151+
if { (ac_try="$ac_compile"
4152+
case "(($ac_try" in
4153+
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4154+
*) ac_try_echo=$ac_try;;
4155+
esac
4156+
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
4157+
$as_echo "$ac_try_echo") >&5
4158+
(eval "$ac_compile") 2>conftest.er1
4159+
ac_status=$?
4160+
grep -v '^ *+' conftest.er1 >conftest.err
4161+
rm -f conftest.er1
4162+
cat conftest.err >&5
4163+
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
4164+
(exit $ac_status); } && {
4165+
test -z "$ac_c_werror_flag" ||
4166+
test ! -s conftest.err
4167+
} && test -s conftest.$ac_objext; then
4168+
pgac_cv_prog_cc_cflags__Wmissing_format_attribute=yes
4169+
else
4170+
$as_echo "$as_me: failed program was:" >&5
4171+
sed 's/^/| /' conftest.$ac_ext >&5
4172+
4173+
pgac_cv_prog_cc_cflags__Wmissing_format_attribute=no
4174+
fi
4175+
4176+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4177+
ac_c_werror_flag=$ac_save_c_werror_flag
4178+
CFLAGS="$pgac_save_CFLAGS"
4179+
fi
4180+
{ $as_echo "$as_me:$LINENO: result: $pgac_cv_prog_cc_cflags__Wmissing_format_attribute" >&5
4181+
$as_echo "$pgac_cv_prog_cc_cflags__Wmissing_format_attribute" >&6; }
4182+
if test x"$pgac_cv_prog_cc_cflags__Wmissing_format_attribute" = x"yes"; then
4183+
CFLAGS="$CFLAGS -Wmissing-format-attribute"
4184+
fi
4185+
41264186
# This was included in -Wall/-Wformat in older GCC versions
41274187
{ $as_echo "$as_me:$LINENO: checking whether $CC supports -Wformat-security" >&5
41284188
$as_echo_n "checking whether $CC supports -Wformat-security... " >&6; }

‎configure.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@ if test "$GCC" = yes -a "$ICC" = no; then
430430
# These work in some but not all gcc versions
431431
PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement])
432432
PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels])
433+
PGAC_PROG_CC_CFLAGS_OPT([-Wmissing-format-attribute])
433434
# This was included in -Wall/-Wformat in older GCC versions
434435
PGAC_PROG_CC_CFLAGS_OPT([-Wformat-security])
435436
# Disable strict-aliasing rules; needed for gcc 3.3+

‎contrib/pg_upgrade/info.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo)
286286
(GET_MAJOR_VERSION(old_cluster.major_version) <=804) ?
287287
"" :", 'pg_largeobject_metadata', 'pg_largeobject_metadata_oid_index'");
288288

289-
res=executeQueryOrDie(conn,query);
289+
res=executeQueryOrDie(conn,"%s",query);
290290

291291
ntups=PQntuples(res);
292292

‎contrib/pg_upgrade/pg_upgrade.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,8 @@ voidsplit_old_dump(void);
292292

293293
/* exec.c */
294294

295-
intexec_prog(boolthrow_error,
296-
constchar*cmd,...);
295+
intexec_prog(boolthrow_error,constchar*cmd, ...)
296+
__attribute__((format(PG_PRINTF_ATTRIBUTE,2,3)));
297297
voidverify_directories(void);
298298
boolis_server_running(constchar*datadir);
299299
voidrename_old_pg_control(void);
@@ -377,7 +377,8 @@ voidinit_tablespaces(void);
377377
/* server.c */
378378

379379
PGconn*connectToServer(ClusterInfo*cluster,constchar*db_name);
380-
PGresult*executeQueryOrDie(PGconn*conn,constchar*fmt,...);
380+
PGresult*executeQueryOrDie(PGconn*conn,constchar*fmt, ...)
381+
__attribute__((format(PG_PRINTF_ATTRIBUTE,2,3)));
381382

382383
voidstart_postmaster(ClusterInfo*cluster);
383384
voidstop_postmaster(boolfast);
@@ -390,9 +391,12 @@ voidcheck_pghost_envvar(void);
390391
char*quote_identifier(constchar*s);
391392
intget_user_info(char**user_name);
392393
voidcheck_ok(void);
393-
voidreport_status(eLogTypetype,constchar*fmt,...);
394-
voidpg_log(eLogTypetype,char*fmt,...);
395-
voidprep_status(constchar*fmt,...);
394+
voidreport_status(eLogTypetype,constchar*fmt, ...)
395+
__attribute__((format(PG_PRINTF_ATTRIBUTE,2,3)));
396+
voidpg_log(eLogTypetype,char*fmt, ...)
397+
__attribute__((format(PG_PRINTF_ATTRIBUTE,2,3)));
398+
voidprep_status(constchar*fmt, ...)
399+
__attribute__((format(PG_PRINTF_ATTRIBUTE,1,2)));
396400
voidcheck_ok(void);
397401
char*pg_strdup(constchar*s);
398402
void*pg_malloc(intsize);

‎contrib/pg_upgrade/relfilenode.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr,
7171
}
7272
}
7373

74-
prep_status("");/* in case nothing printed */
74+
prep_status(" ");/* in case nothing printed; pass a space so gcc
75+
* doesn't complain about empty format
76+
* string */
7577
check_ok();
7678

7779
returnmsg;

‎contrib/pgcrypto/px.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ const char *px_resolve_alias(const PX_Alias *aliases, const char *name);
204204
voidpx_set_debug_handler(void (*handler) (constchar*));
205205

206206
#ifdefPX_DEBUG
207-
voidpx_debug(constchar*fmt,...);
207+
voidpx_debug(constchar*fmt, ...)
208+
__attribute__((format(PG_PRINTF_ATTRIBUTE,1,2)));
208209
#else
209210
#definepx_debug(...)
210211
#endif

‎src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ static int_discoverArchiveFormat(ArchiveHandle *AH);
119119

120120
staticintRestoringToDB(ArchiveHandle*AH);
121121
staticvoiddump_lo_buf(ArchiveHandle*AH);
122-
staticvoid_write_msg(constchar*modulename,constchar*fmt,va_listap);
123-
staticvoid_die_horribly(ArchiveHandle*AH,constchar*modulename,constchar*fmt,va_listap);
122+
staticvoid_write_msg(constchar*modulename,constchar*fmt,va_listap) __attribute__((format(PG_PRINTF_ATTRIBUTE,2,0)));
123+
staticvoid_die_horribly(ArchiveHandle*AH,constchar*modulename,constchar*fmt,va_listap) __attribute__((format(PG_PRINTF_ATTRIBUTE,3,0)));
124124

125125
staticvoiddumpTimestamp(ArchiveHandle*AH,constchar*msg,time_ttim);
126126
staticvoidSetOutput(ArchiveHandle*AH,char*filename,intcompression);

‎src/bin/pg_dump/pg_backup_tar.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static void tarClose(ArchiveHandle *AH, TAR_MEMBER *TH);
112112
#ifdef__NOT_USED__
113113
staticchar*tarGets(char*buf,size_tlen,TAR_MEMBER*th);
114114
#endif
115-
staticinttarPrintf(ArchiveHandle*AH,TAR_MEMBER*th,constchar*fmt,...);
115+
staticinttarPrintf(ArchiveHandle*AH,TAR_MEMBER*th,constchar*fmt,...) __attribute__((format(PG_PRINTF_ATTRIBUTE,3,4)));
116116

117117
staticvoid_tarAddFile(ArchiveHandle*AH,TAR_MEMBER*th);
118118
staticint_tarChecksum(char*th);

‎src/include/lib/stringinfo.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ __attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
105105
* without modifying str. Typically the caller would enlarge str and retry
106106
* on false return --- see appendStringInfo for standard usage pattern.
107107
*/
108-
externboolappendStringInfoVA(StringInfostr,constchar*fmt,va_listargs);
108+
externboolappendStringInfoVA(StringInfostr,constchar*fmt,va_listargs)
109+
__attribute__((format(PG_PRINTF_ATTRIBUTE,2,0)));
109110

110111
/*------------------------
111112
* appendStringInfoString

‎src/interfaces/ecpg/ecpglib/descriptor.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
388388
*/
389389
if (arrsize>0&&ntuples>arrsize)
390390
{
391-
ecpg_log("ECPGget_desc on line %d: incorrect number of matches; %d don't fit into array of %d\n",
391+
ecpg_log("ECPGget_desc on line %d: incorrect number of matches; %d don't fit into array of %ld\n",
392392
lineno,ntuples,arrsize);
393393
ecpg_raise(lineno,ECPG_TOO_MANY_MATCHES,ECPG_SQLSTATE_CARDINALITY_VIOLATION,NULL);
394394
return false;
@@ -457,7 +457,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
457457
*/
458458
if (data_var.ind_arrsize>0&&ntuples>data_var.ind_arrsize)
459459
{
460-
ecpg_log("ECPGget_desc on line %d: incorrect number of matches (indicator); %d don't fit into array of %d\n",
460+
ecpg_log("ECPGget_desc on line %d: incorrect number of matches (indicator); %d don't fit into array of %ld\n",
461461
lineno,ntuples,data_var.ind_arrsize);
462462
ecpg_raise(lineno,ECPG_TOO_MANY_MATCHES,ECPG_SQLSTATE_CARDINALITY_VIOLATION,NULL);
463463
return false;

‎src/interfaces/ecpg/ecpglib/error.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ ecpg_raise_backend(int line, PGresult *result, PGconn *conn, int compat)
335335
sqlca->sqlcode=ECPG_PGSQL;
336336

337337
/* %.*s is safe here as long as sqlstate is all-ASCII */
338-
ecpg_log("raising sqlstate %.*s (sqlcode %d): %s\n",
338+
ecpg_log("raising sqlstate %.*s (sqlcode %ld): %s\n",
339339
sizeof(sqlca->sqlstate),sqlca->sqlstate,sqlca->sqlcode,sqlca->sqlerrm.sqlerrmc);
340340

341341
/* free all memory we have allocated for the user */

‎src/interfaces/ecpg/ecpglib/execute.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ ecpg_store_result(const PGresult *results, int act_field,
332332
*/
333333
if ((var->arrsize>0&&ntuples>var->arrsize)|| (var->ind_arrsize>0&&ntuples>var->ind_arrsize))
334334
{
335-
ecpg_log("ecpg_store_result on line %d: incorrect number of matches; %d don't fit into array of %d\n",
335+
ecpg_log("ecpg_store_result on line %d: incorrect number of matches; %d don't fit into array of %ld\n",
336336
stmt->lineno,ntuples,var->arrsize);
337337
ecpg_raise(stmt->lineno,INFORMIX_MODE(stmt->compat) ?ECPG_INFORMIX_SUBSELECT_NOT_ONE :ECPG_TOO_MANY_MATCHES,ECPG_SQLSTATE_CARDINALITY_VIOLATION,NULL);
338338
return false;

‎src/interfaces/ecpg/ecpglib/extern.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ voidecpg_raise(int line, int code, const char *sqlstate, const char *str);
161161
voidecpg_raise_backend(intline,PGresult*result,PGconn*conn,intcompat);
162162
char*ecpg_prepared(constchar*,structconnection*);
163163
boolecpg_deallocate_all_conn(intlineno,enumCOMPAT_MODEc,structconnection*conn);
164-
voidecpg_log(constchar*format,...);
164+
voidecpg_log(constchar*format,...) __attribute__((format(PG_PRINTF_ATTRIBUTE,1,2)));
165165
boolecpg_auto_prepare(int,constchar*,constint,char**,constchar*);
166166
voidecpg_init_sqlca(structsqlca_t*sqlca);
167167

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp