Fix usages of strncpy(), pj_ansi_strncpy(), and strncat() by replacing them with pj_ansi_safe_strncpy() and pj_ansi_safe_strcpycat()
This commit is contained in:
parent
2315043b20
commit
5fe4bc1972
|
@ -1169,8 +1169,8 @@ static pj_bool_t handle_up_down(cli_telnet_sess *sess, pj_bool_t is_up)
|
|||
/* Send data */
|
||||
pj_strcat(&send_data, history);
|
||||
telnet_sess_send(sess, &send_data);
|
||||
pj_ansi_strncpy((char*)&sess->rcmd->rbuf, history->ptr, history->slen);
|
||||
sess->rcmd->rbuf[history->slen] = 0;
|
||||
pj_ansi_safe_strncpy((char*)&sess->rcmd->rbuf, history->ptr,
|
||||
history->slen);
|
||||
sess->rcmd->len = (unsigned)history->slen;
|
||||
sess->rcmd->cur_pos = sess->rcmd->len;
|
||||
return PJ_TRUE;
|
||||
|
|
|
@ -840,6 +840,60 @@ PJ_INLINE(void*) pj_memchr(const void *buf, int c, pj_size_t size)
|
|||
return (void*)memchr((void*)buf, c, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy at most n bytes (including the null char) from source to destination.
|
||||
* In any case, the destination string will be null terminated.
|
||||
*
|
||||
* @param dst The destination string.
|
||||
* @param src The source string.
|
||||
* @param n The size of the destination string.
|
||||
*
|
||||
* @return The destination string
|
||||
*/
|
||||
PJ_INLINE(char*) pj_ansi_safe_strncpy(char *dst, const char *src, pj_size_t n)
|
||||
{
|
||||
#ifdef __GNUC__
|
||||
/* Silence these warnings:
|
||||
* - __builtin_strncpy specified bound equals destination size
|
||||
* - __builtin_strncpy output may be truncated copying x bytes from a string of length x
|
||||
*/
|
||||
# pragma GCC diagnostic push
|
||||
# pragma GCC diagnostic ignored "-Wstringop-truncation"
|
||||
#endif
|
||||
pj_ansi_strncpy(dst, src, n-1);
|
||||
#ifdef __GNUC__
|
||||
# pragma GCC diagnostic pop
|
||||
#endif
|
||||
dst[n-1] = '\0';
|
||||
return dst;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy src0 to destination string, and then concatenate src1 into destination
|
||||
* string, limiting the total number of bytes written to the destination
|
||||
* string to n including the null character. In any case, the destination
|
||||
* string will be null terminated.
|
||||
*
|
||||
* @param dst The destination string.
|
||||
* @param src The source string.
|
||||
* @param n The size of the destination string.
|
||||
*
|
||||
* @return The destination string
|
||||
*/
|
||||
PJ_INLINE(char*) pj_ansi_safe_strcpycat(char *dst,
|
||||
const char *src0,
|
||||
const char *src1,
|
||||
pj_size_t n)
|
||||
{
|
||||
pj_ansi_safe_strncpy(dst, src0, n);
|
||||
if (src1) {
|
||||
pj_size_t dst_len = pj_ansi_strlen(dst);
|
||||
if (dst_len < n-1)
|
||||
pj_ansi_safe_strncpy(dst+dst_len, src1, n-dst_len);
|
||||
}
|
||||
return dst;
|
||||
}
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -220,9 +220,8 @@ PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename,
|
|||
|
||||
/* Store canonical name (possibly truncating the name) */
|
||||
if (res->ai_canonname) {
|
||||
pj_ansi_strncpy(ai[i].ai_canonname, res->ai_canonname,
|
||||
sizeof(ai[i].ai_canonname));
|
||||
ai[i].ai_canonname[sizeof(ai[i].ai_canonname)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ai[i].ai_canonname, res->ai_canonname,
|
||||
sizeof(ai[i].ai_canonname));
|
||||
} else {
|
||||
pj_ansi_strcpy(ai[i].ai_canonname, nodecopy);
|
||||
}
|
||||
|
@ -303,9 +302,8 @@ PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename,
|
|||
pj_bzero(ai, max_count * sizeof(pj_addrinfo));
|
||||
|
||||
for (i=0; he.h_addr_list[i] && *count<max_count; ++i) {
|
||||
pj_ansi_strncpy(ai[*count].ai_canonname, he.h_name,
|
||||
sizeof(ai[*count].ai_canonname));
|
||||
ai[*count].ai_canonname[sizeof(ai[*count].ai_canonname)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ai[*count].ai_canonname, he.h_name,
|
||||
sizeof(ai[*count].ai_canonname));
|
||||
|
||||
ai[*count].ai_addr.ipv4.sin_family = PJ_AF_INET;
|
||||
pj_memcpy(&ai[*count].ai_addr.ipv4.sin_addr,
|
||||
|
|
|
@ -306,7 +306,7 @@ static pj_status_t if_enum_by_af(int af, unsigned *p_cnt, pj_sockaddr ifs[])
|
|||
struct sockaddr *ad;
|
||||
int rc;
|
||||
|
||||
strncpy(ifreq.ifr_name, if_list[i].if_name, IFNAMSIZ);
|
||||
pj_ansi_safe_strncpy(ifreq.ifr_name, if_list[i].if_name, IFNAMSIZ);
|
||||
|
||||
TRACE_((THIS_FILE, " checking interface %s", ifreq.ifr_name));
|
||||
|
||||
|
|
|
@ -725,8 +725,7 @@ PJ_DEF(pj_status_t) pj_thread_create( pj_pool_t *pool,
|
|||
if (strchr(thread_name, '%')) {
|
||||
pj_ansi_snprintf(rec->obj_name, PJ_MAX_OBJ_NAME, thread_name, rec);
|
||||
} else {
|
||||
strncpy(rec->obj_name, thread_name, PJ_MAX_OBJ_NAME);
|
||||
rec->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(rec->obj_name, thread_name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
/* Set default stack size */
|
||||
|
@ -1352,8 +1351,7 @@ static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name, int type)
|
|||
if (strchr(name, '%')) {
|
||||
pj_ansi_snprintf(mutex->obj_name, PJ_MAX_OBJ_NAME, name, mutex);
|
||||
} else {
|
||||
strncpy(mutex->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
mutex->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(mutex->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
PJ_LOG(6, (mutex->obj_name, "Mutex created"));
|
||||
|
@ -1771,8 +1769,7 @@ PJ_DEF(pj_status_t) pj_sem_create( pj_pool_t *pool,
|
|||
if (strchr(name, '%')) {
|
||||
pj_ansi_snprintf(sem->obj_name, PJ_MAX_OBJ_NAME, name, sem);
|
||||
} else {
|
||||
strncpy(sem->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
sem->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(sem->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
PJ_LOG(6, (sem->obj_name, "Semaphore created"));
|
||||
|
|
|
@ -581,8 +581,7 @@ PJ_DEF(pj_status_t) pj_thread_create( pj_pool_t *pool,
|
|||
if (strchr(thread_name, '%')) {
|
||||
pj_ansi_snprintf(rec->obj_name, PJ_MAX_OBJ_NAME, thread_name, rec);
|
||||
} else {
|
||||
pj_ansi_strncpy(rec->obj_name, thread_name, PJ_MAX_OBJ_NAME);
|
||||
rec->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(rec->obj_name, thread_name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
PJ_LOG(6, (rec->obj_name, "Thread created"));
|
||||
|
@ -1015,8 +1014,7 @@ static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name)
|
|||
if (strchr(name, '%')) {
|
||||
pj_ansi_snprintf(mutex->obj_name, PJ_MAX_OBJ_NAME, name, mutex);
|
||||
} else {
|
||||
pj_ansi_strncpy(mutex->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
mutex->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(mutex->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
PJ_LOG(6, (mutex->obj_name, "Mutex created"));
|
||||
|
@ -1266,8 +1264,7 @@ PJ_DEF(pj_status_t) pj_sem_create( pj_pool_t *pool,
|
|||
if (strchr(name, '%')) {
|
||||
pj_ansi_snprintf(sem->obj_name, PJ_MAX_OBJ_NAME, name, sem);
|
||||
} else {
|
||||
pj_ansi_strncpy(sem->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
sem->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(sem->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
LOG_MUTEX((sem->obj_name, "Semaphore created"));
|
||||
|
@ -1407,8 +1404,7 @@ PJ_DEF(pj_status_t) pj_event_create( pj_pool_t *pool,
|
|||
if (strchr(name, '%')) {
|
||||
pj_ansi_snprintf(event->obj_name, PJ_MAX_OBJ_NAME, name, event);
|
||||
} else {
|
||||
pj_ansi_strncpy(event->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
event->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(event->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
|
||||
PJ_LOG(6, (event->obj_name, "Event created"));
|
||||
|
|
|
@ -166,8 +166,7 @@ PJ_DEF(void) pj_pool_init_int( pj_pool_t *pool,
|
|||
pj_ansi_snprintf(pool->obj_name, sizeof(pool->obj_name),
|
||||
name, pool);
|
||||
} else {
|
||||
pj_ansi_strncpy(pool->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
pool->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
|
||||
pj_ansi_safe_strncpy(pool->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
}
|
||||
} else {
|
||||
pool->obj_name[0] = '\0';
|
||||
|
|
|
@ -72,8 +72,7 @@ PJ_DEF(pj_pool_t*) pj_pool_create_imp( const char *file, int line,
|
|||
return NULL;
|
||||
|
||||
if (name) {
|
||||
pj_ansi_strncpy(pool->obj_name, name, sizeof(pool->obj_name));
|
||||
pool->obj_name[sizeof(pool->obj_name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(pool->obj_name, name, sizeof(pool->obj_name));
|
||||
} else {
|
||||
strcpy(pool->obj_name, "altpool");
|
||||
}
|
||||
|
|
|
@ -179,7 +179,7 @@ static pj_str_t tls_strerror(pj_status_t status,
|
|||
|
||||
#if defined(PJ_HAS_ERROR_STRING) && (PJ_HAS_ERROR_STRING != 0)
|
||||
if (tmp) {
|
||||
pj_ansi_strncpy(buf, tmp, bufsize);
|
||||
pj_ansi_safe_strncpy(buf, tmp, bufsize);
|
||||
errstr = pj_str(buf);
|
||||
return errstr;
|
||||
}
|
||||
|
|
|
@ -191,7 +191,7 @@ static void update_certs_info(pj_ssl_sock_t* ssock,
|
|||
# ifdef _MSC_VER
|
||||
# define strerror_r(err,buf,len) strerror_s(buf,len,err)
|
||||
# else
|
||||
# define strerror_r(err,buf,len) pj_ansi_strncpy(buf,strerror(err),len)
|
||||
# define strerror_r(err,buf,len) pj_ansi_safe_strncpy(buf,strerror(err),len)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
@ -441,7 +441,7 @@ static pj_str_t ssl_strerror(pj_status_t status,
|
|||
const char *tmp = NULL;
|
||||
tmp = ERR_reason_error_string(ssl_err);
|
||||
if (tmp) {
|
||||
pj_ansi_strncpy(buf, tmp, bufsize);
|
||||
pj_ansi_safe_strncpy(buf, tmp, bufsize);
|
||||
errstr = pj_str(buf);
|
||||
return errstr;
|
||||
}
|
||||
|
|
|
@ -258,7 +258,7 @@ static pj_status_t add_dev (struct alsa_factory *af, const char *dev_name)
|
|||
pj_bzero(adi, sizeof(*adi));
|
||||
|
||||
/* Set device name */
|
||||
strncpy(adi->name, dev_name, sizeof(adi->name));
|
||||
pj_ansi_safe_strncpy(adi->name, dev_name, sizeof(adi->name));
|
||||
|
||||
/* Check the number of playback channels */
|
||||
adi->output_count = (pb_result>=0) ? 1 : 0;
|
||||
|
@ -311,17 +311,15 @@ static void get_mixer_name(struct alsa_factory *af)
|
|||
{
|
||||
if (snd_mixer_selem_has_playback_volume(elem))
|
||||
{
|
||||
pj_ansi_strncpy(af->pb_mixer_name, elemname,
|
||||
sizeof(af->pb_mixer_name));
|
||||
af->pb_mixer_name[sizeof(af->pb_mixer_name)-1] = 0;
|
||||
pj_ansi_safe_strncpy(af->pb_mixer_name, elemname,
|
||||
sizeof(af->pb_mixer_name));
|
||||
TRACE_((THIS_FILE, "Playback mixer name: %s",
|
||||
af->pb_mixer_name));
|
||||
}
|
||||
if (snd_mixer_selem_has_capture_volume(elem))
|
||||
{
|
||||
pj_ansi_strncpy(af->cap_mixer_name, elemname,
|
||||
sizeof(af->cap_mixer_name));
|
||||
af->cap_mixer_name[sizeof(af->cap_mixer_name)-1] = 0;
|
||||
pj_ansi_safe_strncpy(af->cap_mixer_name, elemname,
|
||||
sizeof(af->cap_mixer_name));
|
||||
TRACE_((THIS_FILE, "Capture mixer name: %s",
|
||||
af->cap_mixer_name));
|
||||
}
|
||||
|
|
|
@ -174,8 +174,7 @@ static pj_status_t factory_get_dev_info(pjmedia_aud_dev_factory *f,
|
|||
return PJMEDIA_EAUD_INVDEV;
|
||||
|
||||
pj_bzero(info, sizeof(*info));
|
||||
pj_ansi_strncpy(info->name, si->name, sizeof(info->name));
|
||||
info->name[sizeof(info->name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(info->name, si->name, sizeof(info->name));
|
||||
info->input_count = si->input_count;
|
||||
info->output_count = si->output_count;
|
||||
info->default_samples_per_sec = si->default_samples_per_sec;
|
||||
|
|
|
@ -415,7 +415,7 @@ static pj_status_t oboe_refresh(pjmedia_aud_dev_factory *ff)
|
|||
/* Get name info */
|
||||
jstring jstrtmp = (jstring)jni_env->GetObjectField(jdev_info, jobjs.dev_info.f_name);
|
||||
const char *strtmp = jni_env->GetStringUTFChars(jstrtmp, NULL);
|
||||
pj_ansi_strncpy(base_adi->name, strtmp, sizeof(base_adi->name));
|
||||
pj_ansi_safe_strncpy(base_adi->name, strtmp, sizeof(base_adi->name));
|
||||
|
||||
f->dev_count++;
|
||||
|
||||
|
|
|
@ -519,13 +519,11 @@ static pj_status_t pa_get_dev_info(pjmedia_aud_dev_factory *f,
|
|||
return PJMEDIA_EAUD_INVDEV;
|
||||
|
||||
pj_bzero(info, sizeof(*info));
|
||||
strncpy(info->name, pa_info->name, sizeof(info->name));
|
||||
info->name[sizeof(info->name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(info->name, pa_info->name, sizeof(info->name));
|
||||
info->input_count = pa_info->maxInputChannels;
|
||||
info->output_count = pa_info->maxOutputChannels;
|
||||
info->default_samples_per_sec = (unsigned)pa_info->defaultSampleRate;
|
||||
strncpy(info->driver, DRIVER_NAME, sizeof(info->driver));
|
||||
info->driver[sizeof(info->driver)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(info->driver, DRIVER_NAME, sizeof(info->driver));
|
||||
info->caps = PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY |
|
||||
PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY;
|
||||
|
||||
|
|
|
@ -330,16 +330,15 @@ static void build_dev_info(UINT deviceId, struct wmme_dev_info *wdi,
|
|||
|
||||
/* Device Name */
|
||||
if (deviceId==WAVE_MAPPER) {
|
||||
strncpy(wdi->info.name, "Wave mapper", sizeof(wdi->info.name));
|
||||
wdi->info.name[sizeof(wdi->info.name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(wdi->info.name, "Wave mapper",
|
||||
sizeof(wdi->info.name));
|
||||
} else {
|
||||
const pj_char_t *szPname = WIC_WOC(wic, woc, szPname);
|
||||
PJ_DECL_ANSI_TEMP_BUF(wTmp, sizeof(wdi->info.name));
|
||||
|
||||
strncpy(wdi->info.name,
|
||||
pj_ansi_safe_strncpy(wdi->info.name,
|
||||
PJ_NATIVE_TO_STRING(szPname, wTmp, PJ_ARRAY_SIZE(wTmp)),
|
||||
sizeof(wdi->info.name));
|
||||
wdi->info.name[sizeof(wdi->info.name)-1] = '\0';
|
||||
}
|
||||
|
||||
wdi->info.default_samples_per_sec = 16000;
|
||||
|
|
|
@ -540,12 +540,12 @@ static pj_status_t and_factory_refresh(pjmedia_vid_dev_factory *ff)
|
|||
PJMEDIA_VID_DEV_CAP_ORIENTATION;
|
||||
|
||||
/* Set driver & name info */
|
||||
pj_ansi_strncpy(vdi->driver, "Android", sizeof(vdi->driver));
|
||||
pj_ansi_safe_strncpy(vdi->driver, "Android", sizeof(vdi->driver));
|
||||
adi->facing = facing;
|
||||
if (facing == 0) {
|
||||
pj_ansi_strncpy(vdi->name, "Back camera", sizeof(vdi->name));
|
||||
pj_ansi_safe_strncpy(vdi->name, "Back camera", sizeof(vdi->name));
|
||||
} else {
|
||||
pj_ansi_strncpy(vdi->name, "Front camera", sizeof(vdi->name));
|
||||
pj_ansi_safe_strncpy(vdi->name, "Front camera", sizeof(vdi->name));
|
||||
}
|
||||
|
||||
/* Get supported sizes */
|
||||
|
|
|
@ -281,8 +281,9 @@ static void reset_dev_info(struct avi_dev_info *adi)
|
|||
pj_bzero(adi, sizeof(*adi));
|
||||
|
||||
/* Fill up with *dummy" device info */
|
||||
pj_ansi_strncpy(adi->info.name, "AVI Player", sizeof(adi->info.name)-1);
|
||||
pj_ansi_strncpy(adi->info.driver, DRIVER_NAME, sizeof(adi->info.driver)-1);
|
||||
pj_ansi_safe_strncpy(adi->info.name, "AVI Player", sizeof(adi->info.name));
|
||||
pj_ansi_safe_strncpy(adi->info.driver, DRIVER_NAME,
|
||||
sizeof(adi->info.driver));
|
||||
adi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
adi->info.has_callback = PJ_FALSE;
|
||||
}
|
||||
|
@ -484,8 +485,10 @@ PJ_DEF(pj_status_t) pjmedia_avi_dev_alloc( pjmedia_vid_dev_factory *f,
|
|||
}
|
||||
|
||||
/* Init device info */
|
||||
pj_ansi_strncpy(adi->info.name, adi->title.ptr, sizeof(adi->info.name)-1);
|
||||
pj_ansi_strncpy(adi->info.driver, DRIVER_NAME, sizeof(adi->info.driver)-1);
|
||||
pj_ansi_safe_strncpy(adi->info.name, adi->title.ptr,
|
||||
sizeof(adi->info.name));
|
||||
pj_ansi_safe_strncpy(adi->info.driver, DRIVER_NAME,
|
||||
sizeof(adi->info.driver));
|
||||
adi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
adi->info.has_callback = PJ_FALSE;
|
||||
|
||||
|
|
|
@ -201,11 +201,10 @@ static pj_status_t cbar_factory_init(pjmedia_vid_dev_factory *f)
|
|||
/* Passive capturer */
|
||||
ddi = &cf->dev_info[0];
|
||||
pj_bzero(ddi, sizeof(*ddi));
|
||||
pj_ansi_strncpy(ddi->info.name, "Colorbar generator",
|
||||
sizeof(ddi->info.name));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
pj_ansi_strncpy(ddi->info.driver, "Colorbar", sizeof(ddi->info.driver));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ddi->info.name, "Colorbar generator",
|
||||
sizeof(ddi->info.name));
|
||||
pj_ansi_safe_strncpy(ddi->info.driver, "Colorbar",
|
||||
sizeof(ddi->info.driver));
|
||||
ddi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
ddi->info.has_callback = PJ_FALSE;
|
||||
|
||||
|
@ -221,11 +220,10 @@ static pj_status_t cbar_factory_init(pjmedia_vid_dev_factory *f)
|
|||
/* Active capturer */
|
||||
ddi = &cf->dev_info[1];
|
||||
pj_bzero(ddi, sizeof(*ddi));
|
||||
pj_ansi_strncpy(ddi->info.name, "Colorbar-active",
|
||||
sizeof(ddi->info.name));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
pj_ansi_strncpy(ddi->info.driver, "Colorbar", sizeof(ddi->info.driver));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ddi->info.name, "Colorbar-active",
|
||||
sizeof(ddi->info.name));
|
||||
pj_ansi_safe_strncpy(ddi->info.driver, "Colorbar",
|
||||
sizeof(ddi->info.driver));
|
||||
ddi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
ddi->info.has_callback = PJ_TRUE;
|
||||
|
||||
|
|
|
@ -304,8 +304,8 @@ static pj_status_t darwin_factory_refresh(pjmedia_vid_dev_factory *f)
|
|||
/* Init output device */
|
||||
qdi = &qf->dev_info[qf->dev_count++];
|
||||
pj_bzero(qdi, sizeof(*qdi));
|
||||
pj_ansi_strncpy(qdi->info.name, "UIView", sizeof(qdi->info.name));
|
||||
pj_ansi_strncpy(qdi->info.driver, "iOS", sizeof(qdi->info.driver));
|
||||
pj_ansi_safe_strncpy(qdi->info.name, "UIView", sizeof(qdi->info.name));
|
||||
pj_ansi_safe_strncpy(qdi->info.driver, "iOS", sizeof(qdi->info.driver));
|
||||
qdi->info.dir = PJMEDIA_DIR_RENDER;
|
||||
qdi->info.has_callback = PJ_FALSE;
|
||||
#endif
|
||||
|
@ -363,9 +363,11 @@ static pj_status_t darwin_factory_refresh(pjmedia_vid_dev_factory *f)
|
|||
|
||||
qdi = &qf->dev_info[qf->dev_count++];
|
||||
pj_bzero(qdi, sizeof(*qdi));
|
||||
pj_ansi_strncpy(qdi->info.name, [device.localizedName UTF8String],
|
||||
sizeof(qdi->info.name));
|
||||
pj_ansi_strncpy(qdi->info.driver, "AVF", sizeof(qdi->info.driver));
|
||||
pj_ansi_safe_strncpy(qdi->info.name,
|
||||
[device.localizedName UTF8String],
|
||||
sizeof(qdi->info.name));
|
||||
pj_ansi_safe_strncpy(qdi->info.driver, "AVF",
|
||||
sizeof(qdi->info.driver));
|
||||
qdi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
qdi->info.has_callback = PJ_FALSE;
|
||||
#if TARGET_OS_IPHONE
|
||||
|
|
|
@ -476,9 +476,8 @@ static pj_status_t dshow_factory_refresh(pjmedia_vid_dev_factory *f)
|
|||
CoTaskMemFree(wszDisplayName);
|
||||
}
|
||||
|
||||
strncpy(ddi->info.driver, "dshow",
|
||||
sizeof(ddi->info.driver));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ddi->info.driver, "dshow",
|
||||
sizeof(ddi->info.driver));
|
||||
ddi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
ddi->info.has_callback = PJ_TRUE;
|
||||
|
||||
|
@ -506,10 +505,10 @@ static pj_status_t dshow_factory_refresh(pjmedia_vid_dev_factory *f)
|
|||
#if HAS_VMR
|
||||
ddi = &df->dev_info[df->dev_count++];
|
||||
pj_bzero(ddi, sizeof(*ddi));
|
||||
pj_ansi_strncpy(ddi->info.name, "Video Mixing Renderer",
|
||||
sizeof(ddi->info.name));
|
||||
ddi->info.name[sizeof(ddi->info.name)-1] = '\0';
|
||||
pj_ansi_strncpy(ddi->info.driver, "dshow", sizeof(ddi->info.driver));
|
||||
pj_ansi_safe_strncpy(ddi->info.name, "Video Mixing Renderer",
|
||||
sizeof(ddi->info.name));
|
||||
pj_ansi_safe_strncpy(ddi->info.driver, "dshow",
|
||||
sizeof(ddi->info.driver));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
ddi->info.dir = PJMEDIA_DIR_RENDER;
|
||||
ddi->info.has_callback = PJ_FALSE;
|
||||
|
|
|
@ -467,8 +467,8 @@ static pj_status_t ffmpeg_factory_refresh(pjmedia_vid_dev_factory *f)
|
|||
|
||||
info = &ff->dev_info[ff->dev_count++];
|
||||
pj_bzero(info, sizeof(*info));
|
||||
pj_ansi_strncpy(info->base.name, "default",
|
||||
sizeof(info->base.name));
|
||||
pj_ansi_safe_strncpy(info->base.name, "default",
|
||||
sizeof(info->base.name));
|
||||
pj_ansi_snprintf(info->base.driver, sizeof(info->base.driver),
|
||||
"ffmpeg %s", p->name);
|
||||
|
||||
|
|
|
@ -493,22 +493,22 @@ static pj_status_t sdl_factory_init(pjmedia_vid_dev_factory *f)
|
|||
|
||||
ddi = &sf->dev_info[0];
|
||||
pj_bzero(ddi, sizeof(*ddi));
|
||||
strncpy(ddi->info.name, "SDL renderer", sizeof(ddi->info.name));
|
||||
ddi->info.name[sizeof(ddi->info.name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ddi->info.name, "SDL renderer",
|
||||
sizeof(ddi->info.name));
|
||||
ddi->info.fmt_cnt = PJ_ARRAY_SIZE(sdl_fmts);
|
||||
|
||||
#if PJMEDIA_VIDEO_DEV_SDL_HAS_OPENGL
|
||||
ddi = &sf->dev_info[OPENGL_DEV_IDX];
|
||||
pj_bzero(ddi, sizeof(*ddi));
|
||||
strncpy(ddi->info.name, "SDL openGL renderer", sizeof(ddi->info.name));
|
||||
ddi->info.name[sizeof(ddi->info.name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ddi->info.name, "SDL openGL renderer",
|
||||
sizeof(ddi->info.name));
|
||||
ddi->info.fmt_cnt = 1;
|
||||
#endif /* PJMEDIA_VIDEO_DEV_SDL_HAS_OPENGL */
|
||||
|
||||
for (i = 0; i < sf->dev_count; i++) {
|
||||
ddi = &sf->dev_info[i];
|
||||
strncpy(ddi->info.driver, "SDL", sizeof(ddi->info.driver));
|
||||
ddi->info.driver[sizeof(ddi->info.driver)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ddi->info.driver, "SDL",
|
||||
sizeof(ddi->info.driver));
|
||||
ddi->info.dir = PJMEDIA_DIR_RENDER;
|
||||
ddi->info.has_callback = PJ_FALSE;
|
||||
ddi->info.caps = PJMEDIA_VID_DEV_CAP_FORMAT |
|
||||
|
|
|
@ -353,13 +353,11 @@ static pj_status_t v4l2_scan_devs(vid4lin_factory *f)
|
|||
continue;
|
||||
}
|
||||
|
||||
strncpy(pdi->dev_name, dev_name, sizeof(pdi->dev_name));
|
||||
pdi->dev_name[sizeof(pdi->dev_name)-1] = '\0';
|
||||
strncpy(pdi->info.name, (char*)pdi->v4l2_cap.card,
|
||||
sizeof(pdi->info.name));
|
||||
pdi->info.name[sizeof(pdi->info.name)-1] = '\0';
|
||||
strncpy(pdi->info.driver, DRIVER_NAME, sizeof(pdi->info.driver));
|
||||
pdi->info.driver[sizeof(pdi->info.driver)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(pdi->dev_name, dev_name, sizeof(pdi->dev_name));
|
||||
pj_ansi_safe_strncpy(pdi->info.name, (char*)pdi->v4l2_cap.card,
|
||||
sizeof(pdi->info.name));
|
||||
pj_ansi_safe_strncpy(pdi->info.driver, DRIVER_NAME,
|
||||
sizeof(pdi->info.driver));
|
||||
pdi->info.dir = PJMEDIA_DIR_CAPTURE;
|
||||
pdi->info.has_callback = PJ_FALSE;
|
||||
pdi->info.caps = PJMEDIA_VID_DEV_CAP_FORMAT;
|
||||
|
@ -618,8 +616,7 @@ static pj_status_t vid4lin_factory_create_stream(pjmedia_vid_dev_factory *f,
|
|||
pj_memcpy(&stream->param, param, sizeof(*param));
|
||||
stream->pool = pool;
|
||||
pj_memcpy(&stream->vid_cb, cb, sizeof(*cb));
|
||||
strncpy(stream->name, vdi->info.name, sizeof(stream->name));
|
||||
stream->name[sizeof(stream->name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(stream->name, vdi->info.name, sizeof(stream->name));
|
||||
stream->user_data = user_data;
|
||||
stream->fd = INVALID_FD;
|
||||
|
||||
|
|
|
@ -135,8 +135,7 @@ PJ_DEF(pj_status_t) pjmedia_aud_driver_init(unsigned drv_idx,
|
|||
|
||||
if (drv->name[0]=='\0') {
|
||||
/* Set driver name */
|
||||
pj_ansi_strncpy(drv->name, info.driver, sizeof(drv->name));
|
||||
drv->name[sizeof(drv->name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(drv->name, info.driver, sizeof(drv->name));
|
||||
}
|
||||
|
||||
if (drv->play_dev_idx < 0 && info.output_count) {
|
||||
|
|
|
@ -106,7 +106,7 @@ PJ_DEF(pj_status_t) pjmedia_delay_buf_create( pj_pool_t *pool,
|
|||
|
||||
b = PJ_POOL_ZALLOC_T(pool, pjmedia_delay_buf);
|
||||
|
||||
pj_ansi_strncpy(b->obj_name, name, PJ_MAX_OBJ_NAME-1);
|
||||
pj_ansi_safe_strncpy(b->obj_name, name, PJ_MAX_OBJ_NAME);
|
||||
|
||||
b->samples_per_frame = samples_per_frame;
|
||||
b->channel_count = channel_count;
|
||||
|
|
|
@ -59,8 +59,7 @@ PJ_DEF(const pjmedia_snd_dev_info*) pjmedia_snd_get_dev_info(unsigned index)
|
|||
return NULL;
|
||||
|
||||
pj_bzero(oi, sizeof(*oi));
|
||||
pj_ansi_strncpy(oi->name, di.name, sizeof(oi->name));
|
||||
oi->name[sizeof(oi->name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(oi->name, di.name, sizeof(oi->name));
|
||||
oi->input_count = di.input_count;
|
||||
oi->output_count = di.output_count;
|
||||
oi->default_samples_per_sec = di.default_samples_per_sec;
|
||||
|
|
|
@ -100,7 +100,7 @@ PJ_DEF(pj_status_t) pjmedia_stream_info_parse_fmtp( pj_pool_t *pool,
|
|||
if (end > start) {
|
||||
if (pool) {
|
||||
token = (char*)pj_pool_alloc(pool, end - start);
|
||||
pj_ansi_strncpy(token, start, end - start);
|
||||
pj_ansi_safe_strncpy(token, start, end - start);
|
||||
} else {
|
||||
token = start;
|
||||
}
|
||||
|
|
|
@ -125,8 +125,8 @@ PJ_DEF(pj_status_t) pjmedia_tp_adapter_create( pjmedia_endpt *endpt,
|
|||
pool = pjmedia_endpt_create_pool(endpt, name, 512, 512);
|
||||
adapter = PJ_POOL_ZALLOC_T(pool, struct tp_adapter);
|
||||
adapter->pool = pool;
|
||||
pj_ansi_strncpy(adapter->base.name, pool->obj_name,
|
||||
sizeof(adapter->base.name));
|
||||
pj_ansi_safe_strncpy(adapter->base.name, pool->obj_name,
|
||||
sizeof(adapter->base.name));
|
||||
adapter->base.type = (pjmedia_transport_type)
|
||||
(PJMEDIA_TRANSPORT_TYPE_USER + 1);
|
||||
adapter->base.op = &tp_adapter_op;
|
||||
|
|
|
@ -255,7 +255,7 @@ static pj_status_t dtls_create(transport_srtp *srtp,
|
|||
ds = PJ_POOL_ZALLOC_T(pool, dtls_srtp);
|
||||
ds->pool = pool;
|
||||
|
||||
pj_ansi_strncpy(ds->base.name, pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
pj_ansi_safe_strncpy(ds->base.name, pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
ds->base.type = (pjmedia_transport_type)PJMEDIA_SRTP_KEYING_DTLS_SRTP;
|
||||
ds->base.op = &dtls_op;
|
||||
ds->base.user_data = srtp;
|
||||
|
|
|
@ -79,7 +79,7 @@ static pj_status_t sdes_create(transport_srtp *srtp,
|
|||
pjmedia_transport *sdes;
|
||||
|
||||
sdes = PJ_POOL_ZALLOC_T(srtp->pool, pjmedia_transport);
|
||||
pj_ansi_strncpy(sdes->name, srtp->pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
pj_ansi_safe_strncpy(sdes->name, srtp->pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
pj_memcpy(sdes->name, "sdes", 4);
|
||||
sdes->type = (pjmedia_transport_type)PJMEDIA_SRTP_KEYING_SDES;
|
||||
sdes->op = &sdes_op;
|
||||
|
|
|
@ -252,8 +252,7 @@ PJ_DEF(pj_status_t) pjmedia_vid_driver_init(unsigned drv_idx,
|
|||
|
||||
if (drv->name[0]=='\0') {
|
||||
/* Set driver name */
|
||||
pj_ansi_strncpy(drv->name, info.driver, sizeof(drv->name));
|
||||
drv->name[sizeof(drv->name)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(drv->name, info.driver, sizeof(drv->name));
|
||||
}
|
||||
|
||||
if (drv->rend_dev_idx < 0 && (info.dir & PJMEDIA_DIR_RENDER)) {
|
||||
|
|
|
@ -2774,8 +2774,7 @@ static pj_status_t cmd_restart_handler(pj_cli_cmd_val *cval)
|
|||
ac = MAX_ARGC - argc;
|
||||
get_options(&cval->argv[i], &ac, argvst);
|
||||
for (j = 0; j < ac; j++) {
|
||||
pj_ansi_strncpy(pbuf, argvst[j].ptr, argvst[j].slen);
|
||||
pbuf[argvst[j].slen] = '\0';
|
||||
pj_ansi_safe_strncpy(pbuf, argvst[j].ptr, argvst[j].slen);
|
||||
argv[argc + j] = pbuf;
|
||||
pbuf += argvst[j].slen + 1;
|
||||
}
|
||||
|
|
|
@ -90,8 +90,7 @@ static gui_menu root_menu = {
|
|||
#if defined(PJ_DARWINOS) && PJ_DARWINOS!=0
|
||||
PJ_INLINE(char *) add_path(const char *path, const char *fname)
|
||||
{
|
||||
strncpy(fpath, path, PATH_LENGTH);
|
||||
strncat(fpath, fname, PATH_LENGTH);
|
||||
pj_ansi_safe_strcpycat(fpath, path, fname, PATH_LENGTH);
|
||||
return fpath;
|
||||
}
|
||||
#else
|
||||
|
@ -133,10 +132,7 @@ static void systest_perror(const char *title, pj_status_t status)
|
|||
else
|
||||
errmsg[0] = '\0';
|
||||
|
||||
strcpy(themsg, title);
|
||||
strncat(themsg, errmsg, sizeof(themsg)-1);
|
||||
themsg[sizeof(themsg)-1] = '\0';
|
||||
|
||||
pj_ansi_safe_strcpycat(themsg, title, errmsg, sizeof(themsg));
|
||||
gui_msgbox("Error", themsg, WITH_OK);
|
||||
}
|
||||
|
||||
|
@ -639,8 +635,7 @@ static void systest_audio_test(void)
|
|||
}
|
||||
|
||||
ti->success = PJ_TRUE;
|
||||
pj_ansi_strncpy(ti->reason, textbuf, sizeof(ti->reason));
|
||||
ti->reason[sizeof(ti->reason)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ti->reason, textbuf, sizeof(ti->reason));
|
||||
}
|
||||
|
||||
|
||||
|
@ -915,8 +910,7 @@ on_return:
|
|||
key = gui_msgbox(title, msg, WITH_OK);
|
||||
|
||||
ti->success = PJ_TRUE;
|
||||
pj_ansi_strncpy(ti->reason, msg, sizeof(ti->reason));
|
||||
ti->reason[sizeof(ti->reason)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ti->reason, msg, sizeof(ti->reason));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1055,8 +1049,7 @@ on_return:
|
|||
pj_ansi_snprintf(msg, sizeof(msg), "Test succeeded.\r\n");
|
||||
|
||||
ti->success = PJ_TRUE;
|
||||
pj_ansi_strncpy(ti->reason, msg, sizeof(ti->reason));
|
||||
ti->reason[sizeof(ti->reason)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ti->reason, msg, sizeof(ti->reason));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1201,8 +1194,7 @@ static void systest_display_settings(void)
|
|||
len = strlen(textbuf);
|
||||
|
||||
ti->success = PJ_TRUE;
|
||||
pj_ansi_strncpy(ti->reason, textbuf, sizeof(ti->reason));
|
||||
ti->reason[sizeof(ti->reason)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(ti->reason, textbuf, sizeof(ti->reason));
|
||||
key = gui_msgbox(title, textbuf, WITH_OK);
|
||||
PJ_UNUSED_ARG(key); /* Warning about unused var */
|
||||
}
|
||||
|
|
|
@ -3863,8 +3863,7 @@ static PyObject *py_pj_parse_simple_sip(PyObject *pSelf, PyObject *pArgs)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
strncpy(tmp, arg_uri, sizeof(tmp));
|
||||
tmp[sizeof(tmp)-1] = '\0';
|
||||
pj_ansi_safe_strncpy(tmp, arg_uri, sizeof(tmp));
|
||||
|
||||
pool = pjsua_pool_create("py_pj_parse_simple_sip", 512, 512);
|
||||
uri = pjsip_parse_uri(pool, tmp, strlen(tmp), 0);
|
||||
|
|
|
@ -41,7 +41,7 @@ const char* find_gcc(const char *gcc_exe)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
strncpy(spath, p, sizeof(spath));
|
||||
pj_ansi_safe_strncpy(spath, p, sizeof(spath));
|
||||
p = strtok(spath, ";");
|
||||
while (p) {
|
||||
int len;
|
||||
|
|
|
@ -292,7 +292,7 @@ void MainWin::call()
|
|||
char uri[256];
|
||||
pjsua_call_setting call_setting;
|
||||
|
||||
pj_ansi_strncpy(uri, dst.toUtf8().data(), sizeof(uri));
|
||||
pj_ansi_safe_strncpy(uri, dst.toUtf8().data(), sizeof(uri));
|
||||
pj_str_t uri2 = pj_str((char*)uri);
|
||||
|
||||
pj_assert(currentCall_ == -1);
|
||||
|
|
|
@ -347,7 +347,7 @@ static void timer_cb(pj_timer_heap_t *timer_heap, struct pj_timer_entry *entry)
|
|||
(inv->timer->refresher == TR_UAS && inv->timer->role == PJSIP_ROLE_UAS);
|
||||
|
||||
entry_id = entry->id;
|
||||
pj_ansi_strncpy(obj_name, inv->pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
pj_ansi_safe_strncpy(obj_name, inv->pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
|
||||
/* Do action based on role(refresher or refreshee).
|
||||
* As refresher:
|
||||
|
|
|
@ -968,7 +968,7 @@ PJ_DEF(pj_status_t) pjsua_call_dump( pjsua_call_id call_id,
|
|||
|
||||
len = (int)pj_ansi_strlen(tmp);
|
||||
if (len + 3 > (int)maxlen) len = maxlen - 3;
|
||||
pj_ansi_strncpy(buffer, tmp, len);
|
||||
pj_ansi_safe_strncpy(buffer, tmp, len);
|
||||
|
||||
p += len;
|
||||
*p++ = '\r';
|
||||
|
|
Loading…
Reference in New Issue