Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
f0da2f2c
提交
f0da2f2c
authored
7月 18, 2019
作者:
Andrey Volk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
FS-11903: Fix errors reported by PVS-Studio Static Code Analyzer for libs/esl
上级
939b949d
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
62 行增加
和
78 行删除
+62
-78
fs_cli.c
libs/esl/fs_cli.c
+34
-25
cJSON.c
libs/esl/src/cJSON.c
+1
-9
cJSON_Utils.c
libs/esl/src/cJSON_Utils.c
+9
-4
esl.c
libs/esl/src/esl.c
+11
-35
esl_buffer.c
libs/esl/src/esl_buffer.c
+6
-2
esl_threadmutex.c
libs/esl/src/esl_threadmutex.c
+1
-3
没有找到文件。
libs/esl/fs_cli.c
浏览文件 @
f0da2f2c
...
...
@@ -689,7 +689,10 @@ static void redisplay(void)
* our own implementation instead. */
const
LineInfo
*
lf
=
el_line
(
el
);
const
char
*
c
=
lf
->
buffer
;
if
(
global_profile
->
batch_mode
)
return
;
if
(
global_profile
->
batch_mode
)
{
esl_mutex_unlock
(
MUTEX
);
return
;
}
printf
(
"%s"
,
prompt_str
);
while
(
c
<
lf
->
lastchar
&&
*
c
)
{
putchar
(
*
c
);
...
...
@@ -898,7 +901,7 @@ static int process_command(esl_handle_t *handle, const char *cmd)
r
=
-
1
;
goto
end
;
}
else
if
(
!
strncasecmp
(
cmd
,
"logfilter"
,
9
))
{
cmd
+=
9
;
while
(
*
cmd
&&
*
cmd
==
' '
)
{
while
(
cmd
&&
*
cmd
&&
*
cmd
==
' '
)
{
cmd
++
;
}
if
(
!
esl_strlen_zero
(
cmd
))
{
...
...
@@ -910,7 +913,7 @@ static int process_command(esl_handle_t *handle, const char *cmd)
output_printf
(
"Logfilter %s
\n
"
,
logfilter
?
"enabled"
:
"disabled"
);
}
else
if
(
!
strncasecmp
(
cmd
,
"uuid"
,
4
))
{
cmd
+=
4
;
while
(
*
cmd
&&
*
cmd
==
' '
)
{
while
(
cmd
&&
*
cmd
&&
*
cmd
==
' '
)
{
cmd
++
;
}
if
(
!
esl_strlen_zero
(
cmd
))
{
...
...
@@ -957,7 +960,7 @@ static int process_command(esl_handle_t *handle, const char *cmd)
if
(
handle
->
last_sr_event
)
{
if
(
handle
->
last_sr_event
->
body
)
{
output_printf
(
"%s
\n
"
,
handle
->
last_sr_event
->
body
);
}
else
if
((
err
=
esl_event_get_header
(
handle
->
last_sr_event
,
"reply-text"
))
&&
!
strncasecmp
(
err
,
"-err"
,
3
))
{
}
else
if
((
err
=
esl_event_get_header
(
handle
->
last_sr_event
,
"reply-text"
))
&&
!
strncasecmp
(
err
,
"-err"
,
4
))
{
output_printf
(
"Error: %s!
\n
"
,
err
+
4
);
}
}
...
...
@@ -1127,7 +1130,10 @@ static char* end_of_str(char *s) { return (*s == '\0' ? s : s + strlen(s) - 1);
static
char
*
_strndup
(
const
char
*
s
,
int
n
)
{
char
*
r
=
(
char
*
)
malloc
(
n
+
1
),
*
d
=
r
;
char
*
r
=
(
char
*
)
malloc
(
n
+
1
),
*
d
;
assert
(
r
);
d
=
r
;
while
(
n
>
0
&&
*
s
)
{
*
d
=
*
s
;
d
++
;
s
++
;
n
--
;
...
...
@@ -1141,9 +1147,13 @@ static unsigned char esl_console_complete(const char *buffer, const char *cursor
char
cmd_str
[
2048
]
=
""
;
unsigned
char
ret
=
CC_REDISPLAY
;
char
*
dup
=
_strndup
(
buffer
,
(
int
)(
lastchar
-
buffer
));
char
*
buf
=
dup
;
char
*
buf
;
int
sc
=
0
,
offset
=
(
int
)(
cursor
-
buffer
),
pos
=
(
offset
>
0
)
?
offset
:
0
;
char
*
p
;
assert
(
dup
);
buf
=
dup
;
if
(
pos
>
0
)
{
*
(
buf
+
pos
)
=
'\0'
;
}
...
...
@@ -1184,31 +1194,30 @@ static unsigned char esl_console_complete(const char *buffer, const char *cursor
if
(
global_handle
->
last_sr_event
&&
global_handle
->
last_sr_event
->
body
)
{
char
*
r
=
global_handle
->
last_sr_event
->
body
;
char
*
w
,
*
p1
;
if
(
r
)
{
if
((
w
=
strstr
(
r
,
"
\n\n
write="
)))
{
int
len
=
0
;
*
w
=
'\0'
;
w
+=
8
;
len
=
atoi
(
w
);
if
((
p1
=
strchr
(
w
,
':'
)))
{
w
=
p1
+
1
;
}
printf
(
"%s
\n\n\n
"
,
r
);
if
((
w
=
strstr
(
r
,
"
\n\n
write="
)))
{
int
len
=
0
;
*
w
=
'\0'
;
w
+=
8
;
len
=
atoi
(
w
);
if
((
p1
=
strchr
(
w
,
':'
)))
{
w
=
p1
+
1
;
}
printf
(
"%s
\n\n\n
"
,
r
);
#ifdef HAVE_LIBEDIT
el_deletestr
(
el
,
len
);
el_insertstr
(
el
,
w
);
el_deletestr
(
el
,
len
);
el_insertstr
(
el
,
w
);
#else
#ifdef _MSC_VER
console_bufferInput
(
0
,
len
,
(
char
*
)
buffer
,
DELETE_REFRESH_OP
);
console_bufferInput
(
w
,
(
int
)
strlen
(
w
),
(
char
*
)
buffer
,
0
);
console_bufferInput
(
0
,
len
,
(
char
*
)
buffer
,
DELETE_REFRESH_OP
);
console_bufferInput
(
w
,
(
int
)
strlen
(
w
),
(
char
*
)
buffer
,
0
);
#endif
#endif
}
else
{
printf
(
"%s
\n
"
,
r
);
}
else
{
printf
(
"%s
\n
"
,
r
);
#ifdef _MSC_VER
console_bufferInput
(
0
,
0
,
(
char
*
)
buffer
,
DELETE_REFRESH_OP
);
console_bufferInput
(
0
,
0
,
(
char
*
)
buffer
,
DELETE_REFRESH_OP
);
#endif
}
}
fflush
(
stdout
);
}
...
...
@@ -1710,7 +1719,7 @@ int main(int argc, char *argv[])
if
(
handle
.
last_sr_event
)
{
if
(
handle
.
last_sr_event
->
body
)
{
printf
(
"%s
\n
"
,
handle
.
last_sr_event
->
body
);
}
else
if
((
err
=
esl_event_get_header
(
handle
.
last_sr_event
,
"reply-text"
))
&&
!
strncasecmp
(
err
,
"-err"
,
3
))
{
}
else
if
((
err
=
esl_event_get_header
(
handle
.
last_sr_event
,
"reply-text"
))
&&
!
strncasecmp
(
err
,
"-err"
,
4
))
{
printf
(
"Error: %s!
\n
"
,
err
+
4
);
}
}
...
...
libs/esl/src/cJSON.c
浏览文件 @
f0da2f2c
...
...
@@ -295,10 +295,7 @@ static unsigned char* ensure(printbuffer * const p, size_t needed, const interna
return
NULL
;
}
if
(
newbuffer
)
{
memcpy
(
newbuffer
,
p
->
buffer
,
p
->
offset
+
1
);
}
memcpy
(
newbuffer
,
p
->
buffer
,
p
->
offset
+
1
);
hooks
->
deallocate
(
p
->
buffer
);
}
p
->
length
=
newsize
;
...
...
@@ -890,11 +887,6 @@ fail:
hooks
->
deallocate
(
buffer
->
buffer
);
}
if
(
printed
!=
NULL
)
{
hooks
->
deallocate
(
printed
);
}
return
NULL
;
}
...
...
libs/esl/src/cJSON_Utils.c
浏览文件 @
f0da2f2c
...
...
@@ -3,6 +3,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <assert.h>
#include "esl_cJSON_Utils.h"
...
...
@@ -137,6 +138,7 @@ CJSON_PUBLIC(char *) cJSONUtils_FindPointerFromObjectTo(cJSON *object, cJSON *ta
{
/* reserve enough memory for a 64 bit integer + '/' and '\0' */
unsigned
char
*
ret
=
(
unsigned
char
*
)
malloc
(
strlen
((
char
*
)
found
)
+
23
);
assert
(
ret
);
/* check if conversion to unsigned long is valid
* This should be eliminated at compile time by dead code elimination
* if size_t is an alias of unsigned long, or if it is bigger */
...
...
@@ -153,6 +155,7 @@ CJSON_PUBLIC(char *) cJSONUtils_FindPointerFromObjectTo(cJSON *object, cJSON *ta
else
if
((
type
&
0xFF
)
==
cJSON_Object
)
{
unsigned
char
*
ret
=
(
unsigned
char
*
)
malloc
(
strlen
((
char
*
)
found
)
+
cJSONUtils_PointerEncodedstrlen
((
unsigned
char
*
)
obj
->
string
)
+
2
);
assert
(
ret
);
*
ret
=
'/'
;
cJSONUtils_PointerEncodedstrcpy
(
ret
+
1
,
(
unsigned
char
*
)
obj
->
string
);
strcat
((
char
*
)
ret
,
(
char
*
)
found
);
...
...
@@ -513,10 +516,9 @@ CJSON_PUBLIC(int) cJSONUtils_ApplyPatches(cJSON *object, cJSON *patches)
/* malformed patches. */
return
1
;
}
if
(
patches
)
{
patches
=
patches
->
child
;
}
patches
=
patches
->
child
;
while
(
patches
)
{
if
((
err
=
cJSONUtils_ApplyPatch
(
object
,
patches
)))
...
...
@@ -536,6 +538,7 @@ static void cJSONUtils_GeneratePatch(cJSON *patches, const unsigned char *op, co
if
(
suffix
)
{
unsigned
char
*
newpath
=
(
unsigned
char
*
)
malloc
(
strlen
((
const
char
*
)
path
)
+
cJSONUtils_PointerEncodedstrlen
(
suffix
)
+
2
);
assert
(
newpath
);
cJSONUtils_PointerEncodedstrcpy
(
newpath
+
sprintf
((
char
*
)
newpath
,
"%s/"
,
(
const
char
*
)
path
),
suffix
);
cJSON_AddItemToObject
(
patch
,
"path"
,
cJSON_CreateString
((
const
char
*
)
newpath
));
free
(
newpath
);
...
...
@@ -589,6 +592,7 @@ static void cJSONUtils_CompareToPatch(cJSON *patches, const unsigned char *path,
{
size_t
c
=
0
;
unsigned
char
*
newpath
=
(
unsigned
char
*
)
malloc
(
strlen
((
const
char
*
)
path
)
+
23
);
/* Allow space for 64bit int. */
assert
(
newpath
);
/* generate patches for all array elements that exist in "from" and "to" */
for
(
c
=
0
,
from
=
from
->
child
,
to
=
to
->
child
;
from
&&
to
;
from
=
from
->
next
,
to
=
to
->
next
,
c
++
)
{
...
...
@@ -643,6 +647,7 @@ static void cJSONUtils_CompareToPatch(cJSON *patches, const unsigned char *path,
{
/* both object keys are the same */
unsigned
char
*
newpath
=
(
unsigned
char
*
)
malloc
(
strlen
((
const
char
*
)
path
)
+
cJSONUtils_PointerEncodedstrlen
((
unsigned
char
*
)
a
->
string
)
+
2
);
assert
(
newpath
);
cJSONUtils_PointerEncodedstrcpy
(
newpath
+
sprintf
((
char
*
)
newpath
,
"%s/"
,
path
),
(
unsigned
char
*
)
a
->
string
);
/* create a patch for the element */
cJSONUtils_CompareToPatch
(
patches
,
newpath
,
a
,
b
);
...
...
libs/esl/src/esl.c
浏览文件 @
f0da2f2c
...
...
@@ -734,9 +734,7 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list
end
:
if
(
server_sock
!=
ESL_SOCK_INVALID
)
{
closesocket
(
server_sock
);
}
closesocket
(
server_sock
);
return
status
;
...
...
@@ -802,9 +800,7 @@ ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port,
end
:
if
(
server_sock
!=
ESL_SOCK_INVALID
)
{
closesocket
(
server_sock
);
}
closesocket
(
server_sock
);
return
status
;
...
...
@@ -1150,9 +1146,7 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle)
while
(
ep
)
{
esl_event_t
*
e
=
ep
;
ep
=
ep
->
next
;
if
(
e
)
{
esl_event_destroy
(
&
e
);
}
esl_event_destroy
(
&
e
);
}
esl_event_safe_destroy
(
&
handle
->
last_event
);
...
...
@@ -1214,10 +1208,7 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms
return
ESL_BREAK
;
}
if
(
activity
<
0
)
{
handle
->
connected
=
0
;
status
=
ESL_FAIL
;
}
else
if
(
activity
>
0
&&
(
activity
&
ESL_POLL_READ
))
{
if
((
activity
&
ESL_POLL_READ
))
{
if
(
esl_recv_event
(
handle
,
check_q
,
save_event
))
{
status
=
ESL_FAIL
;
}
...
...
@@ -1237,9 +1228,7 @@ static esl_ssize_t handle_recv(esl_handle_t *handle, void *data, esl_size_t data
if
(
handle
->
connected
)
{
if
((
activity
=
esl_wait_sock
(
handle
->
sock
,
1000
,
ESL_POLL_READ
|
ESL_POLL_ERROR
))
>
0
)
{
if
(
activity
<
0
)
{
activity
=
-
1
;
}
else
if
((
activity
&
ESL_POLL_ERROR
))
{
if
((
activity
&
ESL_POLL_ERROR
))
{
activity
=
-
1
;
}
else
if
((
activity
&
ESL_POLL_READ
))
{
if
(
!
(
activity
=
recv
(
handle
->
sock
,
data
,
datalen
,
0
)))
{
...
...
@@ -1272,10 +1261,6 @@ ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_
esl_mutex_lock
(
handle
->
mutex
);
if
(
!
handle
->
connected
||
handle
->
sock
==
ESL_SOCK_INVALID
)
{
goto
fail
;
}
esl_event_safe_destroy
(
&
handle
->
last_ievent
);
if
(
check_q
&&
handle
->
race_event
)
{
...
...
@@ -1313,7 +1298,7 @@ ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_
*
e
++
=
'\0'
;
while
(
*
e
==
'\n'
||
*
e
==
'\r'
)
e
++
;
if
(
h
name
&&
h
val
)
{
if
(
hval
)
{
esl_url_decode
(
hval
);
esl_log
(
ESL_LOG_DEBUG
,
"RECV HEADER [%s] = [%s]
\n
"
,
hname
,
hval
);
if
(
!
strncmp
(
hval
,
"ARRAY::"
,
7
))
{
...
...
@@ -1428,7 +1413,7 @@ ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_
hname
=
beg
;
hval
=
col
=
NULL
;
if
(
hname
&&
(
col
=
strchr
(
hname
,
':'
)))
{
if
((
col
=
strchr
(
hname
,
':'
)))
{
hval
=
col
+
1
;
*
col
=
'\0'
;
while
(
*
hval
==
' '
)
hval
++
;
...
...
@@ -1436,7 +1421,7 @@ ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_
*
c
=
'\0'
;
if
(
h
name
&&
h
val
)
{
if
(
hval
)
{
esl_url_decode
(
hval
);
esl_log
(
ESL_LOG_DEBUG
,
"RECV INNER HEADER [%s] = [%s]
\n
"
,
hname
,
hval
);
if
(
!
strcasecmp
(
hname
,
"event-name"
))
{
...
...
@@ -1541,13 +1526,6 @@ ESL_DECLARE(esl_status_t) esl_send_recv_timed(esl_handle_t *handle, const char *
esl_mutex_lock
(
handle
->
mutex
);
if
(
!
handle
->
connected
||
handle
->
sock
==
ESL_SOCK_INVALID
)
{
handle
->
connected
=
0
;
esl_mutex_unlock
(
handle
->
mutex
);
return
ESL_FAIL
;
}
esl_event_safe_destroy
(
&
handle
->
last_sr_event
);
*
handle
->
last_sr_reply
=
'\0'
;
...
...
@@ -1593,12 +1571,10 @@ ESL_DECLARE(esl_status_t) esl_send_recv_timed(esl_handle_t *handle, const char *
goto
recv
;
}
if
(
handle
->
last_sr_event
)
{
hval
=
esl_event_get_header
(
handle
->
last_sr_event
,
"reply-text"
);
hval
=
esl_event_get_header
(
handle
->
last_sr_event
,
"reply-text"
);
if
(
!
esl_strlen_zero
(
hval
))
{
snprintf
(
handle
->
last_sr_reply
,
sizeof
(
handle
->
last_sr_reply
),
"%s"
,
hval
);
}
if
(
!
esl_strlen_zero
(
hval
))
{
snprintf
(
handle
->
last_sr_reply
,
sizeof
(
handle
->
last_sr_reply
),
"%s"
,
hval
);
}
}
...
...
libs/esl/src/esl_buffer.c
浏览文件 @
f0da2f2c
...
...
@@ -205,11 +205,13 @@ ESL_DECLARE(esl_size_t) esl_buffer_read(esl_buffer_t *buffer, void *data, esl_si
ESL_DECLARE
(
esl_size_t
)
esl_buffer_packet_count
(
esl_buffer_t
*
buffer
)
{
char
*
pe
,
*
p
,
*
e
,
*
head
=
(
char
*
)
buffer
->
head
;
char
*
pe
,
*
p
,
*
e
,
*
head
;
esl_size_t
x
=
0
;
esl_assert
(
buffer
!=
NULL
);
head
=
(
char
*
)
buffer
->
head
;
e
=
(
head
+
buffer
->
used
);
for
(
p
=
head
;
p
&&
*
p
&&
p
<
e
;
p
++
)
{
...
...
@@ -228,12 +230,14 @@ ESL_DECLARE(esl_size_t) esl_buffer_packet_count(esl_buffer_t *buffer)
ESL_DECLARE
(
esl_size_t
)
esl_buffer_read_packet
(
esl_buffer_t
*
buffer
,
void
*
data
,
esl_size_t
maxlen
)
{
char
*
pe
,
*
p
,
*
e
,
*
head
=
(
char
*
)
buffer
->
head
;
char
*
pe
,
*
p
,
*
e
,
*
head
;
esl_size_t
datalen
=
0
;
esl_assert
(
buffer
!=
NULL
);
esl_assert
(
data
!=
NULL
);
head
=
(
char
*
)
buffer
->
head
;
e
=
(
head
+
buffer
->
used
);
for
(
p
=
head
;
p
&&
*
p
&&
p
<
e
;
p
++
)
{
...
...
libs/esl/src/esl_threadmutex.c
浏览文件 @
f0da2f2c
...
...
@@ -126,9 +126,7 @@ esl_status_t esl_thread_create_detached_ex(esl_thread_function_t func, void *dat
#endif
fail
:
if
(
thread
)
{
free
(
thread
);
}
free
(
thread
);
done
:
return
status
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论