Merged revisions 147807 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
r147807 | murf | 2008-10-09 08:17:33 -0600 (Thu, 09 Oct 2008) | 15 lines

(closes issue #13557)
Reported by: nickpeirson
Patches:
      pbx.c.patch uploaded by nickpeirson (license 579)
      replace_bzero+bcopy.patch uploaded by nickpeirson (license 579)
Tested by: nickpeirson, murf

1. replaced all refs to bzero and bcopy to memset and memmove instead.
2. added a note to the CODING-GUIDELINES
3. add two macros to asterisk.h to prevent bzero, bcopy from creeping
   back into the source
4. removed bzero from configure, configure.ac, autoconfig.h.in



........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@147811 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.1
Steve Murphy 17 years ago
parent 97766e8a6d
commit 2c1bfe7643

@ -6580,7 +6580,7 @@ static int try_transfer(struct chan_iax2_pvt *pvt, struct iax_ies *ies)
memset(&ied, 0, sizeof(ied));
if (ies->apparent_addr)
bcopy(ies->apparent_addr, &new, sizeof(new));
memmove(&new, ies->apparent_addr, sizeof(new));
if (ies->callno)
newcall = ies->callno;
if (!newcall || !new.sin_addr.s_addr || !new.sin_port) {
@ -6718,7 +6718,7 @@ static int iax2_ack_registry(struct iax_ies *ies, struct sockaddr_in *sin, int c
memset(&us, 0, sizeof(us));
if (ies->apparent_addr)
bcopy(ies->apparent_addr, &us, sizeof(us));
memmove(&us, ies->apparent_addr, sizeof(us));
if (ies->username)
ast_copy_string(peer, ies->username, sizeof(peer));
if (ies->refresh)

@ -701,7 +701,7 @@ static struct ast_frame *oss_read(struct ast_channel *c)
/* XXX can be simplified returning &ast_null_frame */
/* prepare a NULL frame in case we don't have enough data to return */
bzero(f, sizeof(struct ast_frame));
memset(f, '\0', sizeof(struct ast_frame));
f->frametype = AST_FRAME_NULL;
f->src = oss_tech.type;

@ -1411,7 +1411,7 @@ static void send_sound(struct chan_usbradio_pvt *o)
l = FRAME_SIZE - ofs;
if (l > s->datalen - start) /* don't overflow the source */
l = s->datalen - start;
bcopy(s->data + start, myframe + ofs, l * 2);
memmove(myframe + ofs, s->data + start, l * 2);
if (0)
ast_log(LOG_WARNING, "send_sound sound %d/%d of %d into %d\n", l_sampsent, l, s->samplen, ofs);
l_sampsent += l;
@ -1422,14 +1422,14 @@ static void send_sound(struct chan_usbradio_pvt *o)
if (l > 0) {
if (l > FRAME_SIZE - ofs)
l = FRAME_SIZE - ofs;
bcopy(silence, myframe + ofs, l * 2);
memmove(myframe + ofs, silence, l * 2);
l_sampsent += l;
} else { /* silence is over, restart sound if loop */
if (s->repeat == 0) { /* last block */
o->cursound = -1;
o->nosound = 0; /* allow audio data */
if (ofs < FRAME_SIZE) /* pad with silence */
bcopy(silence, myframe + ofs, (FRAME_SIZE - ofs) * 2);
memmove(myframe + ofs, silence, (FRAME_SIZE - ofs) * 2);
}
l_sampsent = 0;
}
@ -1813,7 +1813,7 @@ static struct ast_frame *usbradio_read(struct ast_channel *c)
}
/* XXX can be simplified returning &ast_null_frame */
/* prepare a NULL frame in case we don't have enough data to return */
bzero(f, sizeof(struct ast_frame));
memset(f, '\0', sizeof(struct ast_frame));
f->frametype = AST_FRAME_NULL;
f->src = usbradio_tech.type;

@ -204,7 +204,7 @@ static struct gui_info *cleanup_sdl(struct gui_info *gui, int device_num)
if (gui->win[i].bmp)
SDL_FreeYUVOverlay(gui->win[i].bmp);
}
bzero(gui, sizeof(gui));
memset(gui, '\0', sizeof(gui));
/* deallocates the space allocated for the keypad message boards */
if (gui->bd_dialed)
@ -290,7 +290,7 @@ static void show_frame(struct video_desc *env, int out)
bmp = gui->win[out].bmp;
SDL_LockYUVOverlay(bmp);
/* output picture info - this is sdl, YUV420P */
bzero(&p_out, sizeof(p_out));
memset(&p_out, '\0', sizeof(p_out));
p_out.data[0] = bmp->pixels[0];
p_out.data[1] = bmp->pixels[1];
p_out.data[2] = bmp->pixels[2];
@ -1358,7 +1358,7 @@ static void sdl_setup(struct video_desc *env)
FocusChangeMask | PropertyChangeMask |
ColormapChangeMask | OwnerGrabButtonMask;
bzero(&attr, sizeof(attr));
memset(&attr, '\0', sizeof(attr));
XGetWindowAttributes(SDL_Display, win, &attr);
/* the following events can be delivered only to one client.
@ -1565,7 +1565,7 @@ static int keypad_cfg_read(struct gui_info *gui, const char *val)
return 0;
s1[0] = s2[0] = '\0';
bzero(&e, sizeof(e));
memset(&e, '\0', sizeof(e));
i = sscanf(val, "%14s %14s %d %d %d %d %d",
s1, s2, &e.x0, &e.y0, &e.x1, &e.y1, &e.h);

@ -272,7 +272,7 @@ void fbuf_free(struct fbuf_t *b)
if (b->data && b->size)
ast_free(b->data);
bzero(b, sizeof(*b));
memset(b, '\0', sizeof(*b));
/* restore some fields */
b->w = x.w;
b->h = x.h;
@ -587,7 +587,7 @@ static AVPicture *fill_pict(struct fbuf_t *b, AVPicture *p)
int luv = b->w/2; /* U/V linesize, bytes */
int sample_size = 1;
bzero(p, sizeof(*p));
memset(p, '\0', sizeof(*p));
switch (b->pix_fmt) {
case PIX_FMT_RGB555:
case PIX_FMT_RGB565:

@ -204,7 +204,7 @@ void dump_buf(struct fbuf_t *b)
if ( x == 0) { /* new line */
if (i != 0)
ast_log(LOG_WARNING, "%s\n", buf);
bzero(buf, sizeof(buf));
memset(buf, '\0', sizeof(buf));
sprintf(buf, "%04x: ", i);
}
sprintf(buf + 6 + x*3, "%02x ", b->data[i]);
@ -504,7 +504,7 @@ static int ffmpeg_decode(struct video_dec_desc *v, struct fbuf_t *b)
}
}
if (srclen != 0) /* update b with leftover data */
bcopy(src, b->data, srclen);
memmove(b->data, src, srclen);
b->used = srclen;
b->ebit = 0;
return full_frame;
@ -582,7 +582,7 @@ static struct ast_frame *h263_encap(struct fbuf_t *b, int mtu,
if (len < H263_MIN_LEN) /* unreasonably small */
return NULL;
bzero(h263_hdr, sizeof(h263_hdr));
memset(h263_hdr, '\0', sizeof(h263_hdr));
/* Now set the header bytes. Only type A by now,
* and h[0] = h[2] = h[3] = 0 by default.
* PTYPE starts 30 bits in the picture, so the first useful
@ -647,7 +647,7 @@ static struct ast_frame *h263_encap(struct fbuf_t *b, int mtu,
if (!f)
break;
bcopy(h, f->data.ptr, 4); /* copy the h263 header */
memmove(f->data.ptr, h, 4); /* copy the h263 header */
/* XXX to do: if not aligned, fix sbit and ebit,
* then move i back by 1 for the next frame
*/
@ -737,7 +737,7 @@ static struct ast_frame *h261_encap(struct fbuf_t *b, int mtu,
if (len < H261_MIN_LEN) /* unreasonably small */
return NULL;
bzero(h261_hdr, sizeof(h261_hdr));
memset(h261_hdr, '\0', sizeof(h261_hdr));
/* Similar to the code in h263_encap, but the marker there is longer.
* Start a few bytes within the bitstream to avoid hitting the marker
@ -801,7 +801,7 @@ static struct ast_frame *h261_encap(struct fbuf_t *b, int mtu,
break;
/* recompute header with I=0, V=1 */
h[0] = ( (sbit & 7) << 5 ) | ( (ebit & 7) << 2 ) | 1;
bcopy(h, f->data.ptr, 4); /* copy the h261 header */
memmove(f->data.ptr, h, 4); /* copy the h261 header */
if (ebit) /* not aligned, restart from previous byte */
i--;
sbit = (8 - ebit) & 7;
@ -902,7 +902,7 @@ static int mpeg4_decode(struct video_dec_desc *v, struct fbuf_t *b)
}
datalen -= ret;
if (datalen > 0) /* update b with leftover bytes */
bcopy(b->data + ret, b->data, datalen);
memmove(b->data, b->data + ret, datalen);
b->used = datalen;
b->ebit = 0;
return full_frame;

15
configure vendored

@ -12905,11 +12905,13 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <stdio.h>
#include <sys/types.h> /* for off_t */
#include <stdio.h>
int
main ()
{
return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
int (*fp) (FILE *, off_t, int) = fseeko;
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
;
return 0;
}
@ -12949,11 +12951,13 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#define _LARGEFILE_SOURCE 1
#include <stdio.h>
#include <sys/types.h> /* for off_t */
#include <stdio.h>
int
main ()
{
return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
int (*fp) (FILE *, off_t, int) = fseeko;
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
;
return 0;
}
@ -15245,8 +15249,7 @@ done
for ac_func in asprintf atexit bzero dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf
for ac_func in asprintf atexit dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5

@ -313,7 +313,7 @@ AC_FUNC_STRNLEN
AC_FUNC_STRTOD
AC_FUNC_UTIME_NULL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([asprintf atexit bzero dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf])
AC_CHECK_FUNCS([asprintf atexit dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf])
AC_CHECK_FUNCS([glob])

@ -382,6 +382,12 @@ processor operations, unlike ast_copy_string().
* Use of functions
------------------
For the sake of uclibc, do not use index, bcopy or bzero; use
strchr(), memset(), and memmove() instead. uclibc can be configured
to supply these functions, but we can save these users
time and consternation if we abstain from using these
functions.
When making applications, always ast_strdupa(data) to a local pointer if
you intend to parse the incoming data string.

@ -178,4 +178,7 @@ struct ast_module;
struct ast_variable;
struct ast_str;
#define bzero 0x__dont_use_bzero__use_memset_instead""
#define bcopy 0x__dont_use_bcopy__use_memmove_instead()
#endif /* _ASTERISK_H */

@ -126,9 +126,6 @@
/* Define to 1 if byteswap.h macros are available. */
#undef HAVE_BYTESWAP_H
/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
/* Define this to indicate the ${CAP_DESCRIP} library */
#undef HAVE_CAP

@ -262,7 +262,7 @@ static int __ao2_ref(void *user_data, const int delta)
/* for safety, zero-out the astobj2 header and also the
* first word of the user-data, which we make sure is always
* allocated. */
bzero(obj, sizeof(struct astobj2 *) + sizeof(void *) );
memset(obj, '\0', sizeof(struct astobj2 *) + sizeof(void *) );
free(obj);
}

@ -1426,7 +1426,7 @@ static int __ast_cli_unregister(struct ast_cli_entry *e, struct ast_cli_entry *e
e->_full_cmd = NULL;
if (e->handler) {
/* this is a new-style entry. Reset fields and free memory. */
bzero((char **)(e->cmda), sizeof(e->cmda));
memset((char **)(e->cmda), '\0', sizeof(e->cmda));
ast_free(e->command);
e->command = NULL;
e->usage = NULL;
@ -1444,7 +1444,7 @@ static int __ast_cli_register(struct ast_cli_entry *e, struct ast_cli_entry *ed)
char **dst = (char **)e->cmda; /* need to cast as the entry is readonly */
char *s;
bzero (&a, sizeof(a));
memset(&a, '\0', sizeof(a));
e->handler(e, CLI_INIT, &a);
/* XXX check that usage and command are filled up */
s = ast_skip_blanks(e->command);

@ -2335,7 +2335,7 @@ int ast_parse_arg(const char *arg, enum ast_parse_flags flags,
struct hostent *hp;
struct ast_hostent ahp;
bzero(&_sa_buf, sizeof(_sa_buf)); /* clear buffer */
memset(&_sa_buf, '\0', sizeof(_sa_buf)); /* clear buffer */
/* duplicate the string to strip away the :port */
port = ast_strdupa(arg);
buf = strsep(&port, ":");

@ -1729,7 +1729,7 @@ static int ext_cmp1(const char **p)
return 0x40000; /* XXX make this entry go last... */
}
bzero(chars, sizeof(chars)); /* clear all chars in the set */
memset(chars, '\0', sizeof(chars)); /* clear all chars in the set */
for (; *p < end ; (*p)++) {
unsigned char c1, c2; /* first-last char in range */
c1 = (unsigned char)((*p)[0]);

@ -675,7 +675,7 @@ int ast_stun_request(int s, struct sockaddr_in *dst,
res = ast_select(s + 1, &rfds, NULL, NULL, &to);
if (res <= 0) /* timeout or error */
continue;
bzero(&src, sizeof(src));
memset(&src, '\0', sizeof(src));
srclen = sizeof(src);
/* XXX pass -1 in the size, because stun_handle_packet might
* write past the end of the buffer.
@ -687,7 +687,7 @@ int ast_stun_request(int s, struct sockaddr_in *dst,
retry, res);
continue;
}
bzero(answer, sizeof(struct sockaddr_in));
memset(answer, '\0', sizeof(struct sockaddr_in));
stun_handle_packet(s, &src, reply_buf, res,
stun_get_mapped, answer);
res = 0; /* signal regular exit */

@ -451,7 +451,7 @@ static void rebuild_matrix(int samples)
ast_debug(1, "Resetting translation matrix\n");
bzero(tr_matrix, sizeof(tr_matrix));
memset(tr_matrix, '\0', sizeof(tr_matrix));
/* first, compute all direct costs */
AST_RWLIST_TRAVERSE(&translators, t, list) {

@ -4406,7 +4406,7 @@ static int ext_cmp1(const char **p)
return 0x40000; /* XXX make this entry go last... */
}
bzero(chars, sizeof(chars)); /* clear all chars in the set */
memset(chars, '\0', sizeof(chars)); /* clear all chars in the set */
for (; *p < end ; (*p)++) {
unsigned char c1, c2; /* first-last char in range */
c1 = (unsigned char)((*p)[0]);

Loading…
Cancel
Save