Skip to content

Commit

Permalink
Check the format of more printf-type functions
Browse files Browse the repository at this point in the history
We already have these checks in many printf-type functions that have
prototypes which are in header files.  Add these same checks to some
more prototypes in header functions and to static functions in .c
files.

cc: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Tarmigan Casebolt <tarmigan+git@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Tarmigan Casebolt authored and gitster committed Nov 16, 2009
1 parent 77097fa commit 28bea9e
Show file tree
Hide file tree
Showing 10 changed files with 22 additions and 3 deletions.
2 changes: 2 additions & 0 deletions builtin-fsck.c
Expand Up @@ -47,6 +47,7 @@ static void objreport(struct object *obj, const char *severity,
fputs("\n", stderr);
}

__attribute__((format (printf, 2, 3)))
static int objerror(struct object *obj, const char *err, ...)
{
va_list params;
Expand All @@ -57,6 +58,7 @@ static int objerror(struct object *obj, const char *err, ...)
return -1;
}

__attribute__((format (printf, 3, 4)))
static int fsck_error_func(struct object *obj, int type, const char *err, ...)
{
va_list params;
Expand Down
1 change: 1 addition & 0 deletions builtin-update-index.c
Expand Up @@ -27,6 +27,7 @@ static int mark_valid_only;
#define MARK_VALID 1
#define UNMARK_VALID 2

__attribute__((format (printf, 1, 2)))
static void report(const char *fmt, ...)
{
va_list vp;
Expand Down
1 change: 1 addition & 0 deletions builtin-upload-archive.c
Expand Up @@ -67,6 +67,7 @@ static int run_upload_archive(int argc, const char **argv, const char *prefix)
return write_archive(sent_argc, sent_argv, prefix, 0);
}

__attribute__((format (printf, 1, 2)))
static void error_clnt(const char *fmt, ...)
{
char buf[1024];
Expand Down
2 changes: 2 additions & 0 deletions cache.h
Expand Up @@ -961,7 +961,9 @@ extern void *alloc_object_node(void);
extern void alloc_report(void);

/* trace.c */
__attribute__((format (printf, 1, 2)))
extern void trace_printf(const char *format, ...);
__attribute__((format (printf, 2, 3)))
extern void trace_argv_printf(const char **argv, const char *format, ...);

/* convert.c */
Expand Down
2 changes: 2 additions & 0 deletions color.h
Expand Up @@ -29,7 +29,9 @@ int git_color_default_config(const char *var, const char *value, void *cb);
int git_config_colorbool(const char *var, const char *value, int stdout_is_tty);
void color_parse(const char *value, const char *var, char *dst);
void color_parse_mem(const char *value, int len, const char *var, char *dst);
__attribute__((format (printf, 3, 4)))
int color_fprintf(FILE *fp, const char *color, const char *fmt, ...);
__attribute__((format (printf, 3, 4)))
int color_fprintf_ln(FILE *fp, const char *color, const char *fmt, ...);
int color_fwrite_lines(FILE *fp, const char *color, size_t count, const char *buf);

Expand Down
2 changes: 2 additions & 0 deletions daemon.c
Expand Up @@ -77,6 +77,7 @@ static void logreport(int priority, const char *err, va_list params)
}
}

__attribute__((format (printf, 1, 2)))
static void logerror(const char *err, ...)
{
va_list params;
Expand All @@ -85,6 +86,7 @@ static void logerror(const char *err, ...)
va_end(params);
}

__attribute__((format (printf, 1, 2)))
static void loginfo(const char *err, ...)
{
va_list params;
Expand Down
1 change: 1 addition & 0 deletions fsck.h
Expand Up @@ -17,6 +17,7 @@ typedef int (*fsck_walk_func)(struct object *obj, int type, void *data);
/* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */
typedef int (*fsck_error)(struct object *obj, int type, const char *err, ...);

__attribute__((format (printf, 3, 4)))
int fsck_error_function(struct object *obj, int type, const char *fmt, ...);

/* descend in all linked child objects
Expand Down
8 changes: 7 additions & 1 deletion imap-send.c
Expand Up @@ -100,13 +100,16 @@ struct msg_data {

static int Verbose, Quiet;

__attribute__((format (printf, 1, 2)))
static void imap_info(const char *, ...);
__attribute__((format (printf, 1, 2)))
static void imap_warn(const char *, ...);

static char *next_arg(char **);

static void free_generic_messages(struct message *);

__attribute__((format (printf, 3, 4)))
static int nfsnprintf(char *buf, int blen, const char *fmt, ...);

static int nfvasprintf(char **strp, const char *fmt, va_list ap)
Expand Down Expand Up @@ -600,6 +603,7 @@ static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx,
return cmd;
}

__attribute__((format (printf, 3, 4)))
static struct imap_cmd *issue_imap_cmd(struct imap_store *ctx,
struct imap_cmd_cb *cb,
const char *fmt, ...)
Expand All @@ -613,6 +617,7 @@ static struct imap_cmd *issue_imap_cmd(struct imap_store *ctx,
return ret;
}

__attribute__((format (printf, 3, 4)))
static int imap_exec(struct imap_store *ctx, struct imap_cmd_cb *cb,
const char *fmt, ...)
{
Expand All @@ -628,6 +633,7 @@ static int imap_exec(struct imap_store *ctx, struct imap_cmd_cb *cb,
return get_cmd_result(ctx, cmdp);
}

__attribute__((format (printf, 3, 4)))
static int imap_exec_m(struct imap_store *ctx, struct imap_cmd_cb *cb,
const char *fmt, ...)
{
Expand Down Expand Up @@ -918,7 +924,7 @@ static int get_cmd_result(struct imap_store *ctx, struct imap_cmd *tcmd)
if (!strcmp("NO", arg)) {
if (cmdp->cb.create && cmd && (cmdp->cb.trycreate || !memcmp(cmd, "[TRYCREATE]", 11))) { /* SELECT, APPEND or UID COPY */
p = strchr(cmdp->cmd, '"');
if (!issue_imap_cmd(ctx, NULL, "CREATE \"%.*s\"", strchr(p + 1, '"') - p + 1, p)) {
if (!issue_imap_cmd(ctx, NULL, "CREATE \"%.*s\"", (int)(strchr(p + 1, '"') - p + 1), p)) {
resp = RESP_BAD;
goto normal;
}
Expand Down
4 changes: 3 additions & 1 deletion merge-recursive.c
Expand Up @@ -86,6 +86,7 @@ static void flush_output(struct merge_options *o)
}
}

__attribute__((format (printf, 3, 4)))
static void output(struct merge_options *o, int v, const char *fmt, ...)
{
int len;
Expand Down Expand Up @@ -214,7 +215,8 @@ struct tree *write_tree_from_memory(struct merge_options *o)
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
if (ce_stage(ce))
output(o, 0, "%d %.*s", ce_stage(ce), ce_namelen(ce), ce->name);
output(o, 0, "%d %.*s", ce_stage(ce),
(int)ce_namelen(ce), ce->name);
}
return NULL;
}
Expand Down
2 changes: 1 addition & 1 deletion strbuf.h
Expand Up @@ -117,7 +117,7 @@ struct strbuf_expand_dict_entry {
};
extern size_t strbuf_expand_dict_cb(struct strbuf *sb, const char *placeholder, void *context);

__attribute__((format(printf,2,3)))
__attribute__((format (printf,2,3)))
extern void strbuf_addf(struct strbuf *sb, const char *fmt, ...);

extern size_t strbuf_fread(struct strbuf *, size_t, FILE *);
Expand Down

0 comments on commit 28bea9e

Please sign in to comment.