1
0
forked from aniani/vim

patch 8.1.0954: arguments of semsg() and siemsg() are not checked

Problem:    Arguments of semsg() and siemsg() are not checked.
Solution:   Add function prototype with __attribute__.
This commit is contained in:
Bram Moolenaar 2019-02-19 21:34:05 +01:00
parent c9629251a6
commit 0d8562a999
4 changed files with 30 additions and 4 deletions

View File

@ -730,6 +730,7 @@ emsg(char *s)
return TRUE; /* no error messages at the moment */
}
#ifndef PROTO // manual proto with __attribute__
/*
* Print an error message with format string and variable arguments.
* Note: caller must not pass 'IObuff' as 1st argument.
@ -749,6 +750,7 @@ semsg(const char *s, ...)
}
return TRUE; /* no error messages at the moment */
}
#endif
/*
* Same as emsg(...), but abort on error when ABORT_ON_INTERNAL_ERROR is
@ -765,6 +767,7 @@ iemsg(char *s)
#endif
}
#ifndef PROTO // manual proto with __attribute__
/*
* Same as semsg(...) but abort on error when ABORT_ON_INTERNAL_ERROR is
* defined. It is used for internal errors only, so that they can be
@ -783,10 +786,11 @@ siemsg(const char *s, ...)
va_end(ap);
emsg_core(IObuff);
}
#ifdef ABORT_ON_INTERNAL_ERROR
# ifdef ABORT_ON_INTERNAL_ERROR
abort();
#endif
# endif
}
#endif
/*
* Give an "Internal error" message.

View File

@ -134,6 +134,28 @@ smsg_attr_keep(int, const char *, ...)
#endif
;
/* These prototypes cannot be produced automatically. */
int
# ifdef __BORLANDC__
_RTLENTRYF
# endif
semsg(const char *, ...)
#ifdef USE_PRINTF_FORMAT_ATTRIBUTE
__attribute__((format(printf, 1, 0)))
#endif
;
/* These prototypes cannot be produced automatically. */
void
# ifdef __BORLANDC__
_RTLENTRYF
# endif
siemsg(const char *, ...)
#ifdef USE_PRINTF_FORMAT_ATTRIBUTE
__attribute__((format(printf, 1, 0)))
#endif
;
int
# ifdef __BORLANDC__
_RTLENTRYF

View File

@ -11,9 +11,7 @@ int emsg_not_now(void);
void ignore_error_for_testing(char_u *error);
void do_perror(char *msg);
int emsg(char *s);
int semsg(const char *s, ...);
void iemsg(char *s);
void siemsg(const char *s, ...);
void internal_error(char *where);
void emsg_invreg(int name);
char *msg_trunc_attr(char *s, int force, int attr);

View File

@ -779,6 +779,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
954,
/**/
953,
/**/