Skip to content

Commit fa622dc

Browse files
Merge branch 'RT-Thread:master' into 20260821-fix/lifetime/mutex-delete-waiter-uaf
2 parents cbde064 + 0ae80cc commit fa622dc

37 files changed

Lines changed: 887 additions & 253 deletions

File tree

bsp/allwinner/libraries/sunxi-hal/hal/source/disp2/disp/disp_debug.c

Lines changed: 67 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ static void print_reg(void)
4848
printf("csc\n");
4949
printf_from_to(0x51b0000,0x51b00ff);
5050
}
51-
static int cmd_disp_debug(int argc, const char **argv)
51+
static int cmd_disp_debug(int argc, char **argv)
5252
{
5353
int i = 0, err = 0;
5454
struct disp_manager *mgr = NULL;
@@ -102,37 +102,92 @@ static int cmd_disp_debug(int argc, const char **argv)
102102

103103
/*enhance */
104104
if ( ! strcmp(argv[i], "-e")) {
105-
if (argc > i+2) {
105+
if (argc > i + 1)
106+
{
106107
i+=1;
107108

108109
switch(argv[i][0]) {
109110
case 'm'://mode
111+
if (argc <= i + 2)
112+
{
113+
DE_WRN("-e %s para error!\n", argv[i]);
114+
err++;
115+
break;
116+
}
110117
disp_enhance_mode_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
118+
i += 2;
111119
break;
112120
case 's'://saturation
121+
if (argc <= i + 2)
122+
{
123+
DE_WRN("-e %s para error!\n", argv[i]);
124+
err++;
125+
break;
126+
}
113127
disp_enhance_saturation_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
128+
i += 2;
114129
break;
115130
case 'b'://bright
131+
if (argc <= i + 2)
132+
{
133+
DE_WRN("-e %s para error!\n", argv[i]);
134+
err++;
135+
break;
136+
}
116137
disp_enhance_bright_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
138+
i += 2;
117139
break;
118140
case 'c'://contrast
141+
if (argc <= i + 2)
142+
{
143+
DE_WRN("-e %s para error!\n", argv[i]);
144+
err++;
145+
break;
146+
}
119147
disp_enhance_contrast_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
148+
i += 2;
120149
break;
121150
case 'g'://gamma color_temperature
122-
printf("gamma %s %s %d %d\n",argv[i + 1],argv[i + 2],atoi(argv[i + 1]), atoi(argv[i + 2]));
151+
if (argc <= i + 2)
152+
{
153+
DE_WRN("-e %s para error!\n", argv[i]);
154+
err++;
155+
break;
156+
}
157+
printf("gamma %s %s %d %d\n", argv[i + 1], argv[i + 2], atoi(argv[i + 1]), atoi(argv[i + 2]));
123158
disp_color_temperature_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
159+
i += 2;
124160
break;
125161
case 'n'://denoise
162+
if (argc <= i + 2)
163+
{
164+
DE_WRN("-e %s para error!\n", argv[i]);
165+
err++;
166+
break;
167+
}
126168
disp_enhance_denoise_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
169+
i += 2;
127170
break;
128171
case 'd'://detail
172+
if (argc <= i + 2)
173+
{
174+
DE_WRN("-e %s para error!\n", argv[i]);
175+
err++;
176+
break;
177+
}
129178
disp_enhance_detail_store(atoi(argv[i + 1]), atoi(argv[i + 2]));
179+
i += 2;
130180
break;
131181
case 'p'://print
132-
182+
if (argc <= i + 1)
183+
{
184+
DE_WRN("-e %s para error!\n", argv[i]);
185+
err++;
186+
break;
187+
}
133188
if (atoi(argv[i + 1]) < 0 || atoi(argv[i + 1]) > 1) {
134-
i-=1;
135189
DE_WRN("para error!\n");
190+
err++;
136191
break;
137192
}
138193
DISP_PRINT("screen %d:\n", atoi(argv[i + 1]));
@@ -150,14 +205,16 @@ static int cmd_disp_debug(int argc, const char **argv)
150205
DISP_PRINT("denoise %s\n", tmp);
151206
disp_enhance_detail_show(atoi(argv[i + 1]), tmp);
152207
DISP_PRINT("detail %s\n", tmp);
153-
i-=1;
208+
i += 1;
154209
break;
155210
default:
156211
DE_WRN("para error!\n");
212+
err++;
157213
break;
158214
}
159-
i+=2;
160-
} else {
215+
}
216+
else
217+
{
161218
DE_WRN("para error!\n");
162219
err++;
163220
}
@@ -181,7 +238,7 @@ static int cmd_disp_debug(int argc, const char **argv)
181238
++i;
182239
}
183240
}
184-
return 0;
241+
return err ? -1 : 0;
185242
}
186243

187-
FINSH_FUNCTION_EXPORT_ALIAS(cmd_disp_debug, __cmd_disp, disp cmd);
244+
MSH_CMD_EXPORT_ALIAS(cmd_disp_debug, __cmd_disp, disp cmd);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_layer_alpha_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,4 @@ int disp_layer_alpha_test(int argc, char **argv)
131131
return 0;
132132
}
133133

134-
FINSH_FUNCTION_EXPORT_ALIAS(disp_layer_alpha_test, __cmd_disp_layer_alpha_test, disp_layer_alpha_test);
134+
MSH_CMD_EXPORT_ALIAS(disp_layer_alpha_test, __cmd_disp_layer_alpha_test, disp_layer_alpha_test);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_layer_cfg.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,4 @@ int parse_cmdline_and_set_config(int argc, char **argv)
556556
}
557557
}
558558

559-
560-
561-
FINSH_FUNCTION_EXPORT_ALIAS(parse_cmdline_and_set_config, disp_layer_cfg, disp set layer);
562-
559+
MSH_CMD_EXPORT_ALIAS(parse_cmdline_and_set_config, disp_layer_cfg, disp set layer);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_layer_format_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,4 @@ int disp_layer_format_test(int argc, char **argv)
135135
return 0;
136136
}
137137

138-
FINSH_FUNCTION_EXPORT_ALIAS(disp_layer_format_test, __cmd_disp_layer_format_test, disp_layer_format_test);
138+
MSH_CMD_EXPORT_ALIAS(disp_layer_format_test, __cmd_disp_layer_format_test, disp_layer_format_test);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_layer_rgb_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ int disp_layer_rgb_test(int argc, char **argv)
7979
return 0;
8080
}
8181

82-
FINSH_FUNCTION_EXPORT_ALIAS(disp_layer_rgb_test, __cmd_disp_layer_rgb_test, disp_layer_rgb_test);
82+
MSH_CMD_EXPORT_ALIAS(disp_layer_rgb_test, __cmd_disp_layer_rgb_test, disp_layer_rgb_test);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_layer_scal_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,4 @@ int disp_layer_scal_test(int argc, char **argv)
146146
return 0;
147147
}
148148

149-
FINSH_FUNCTION_EXPORT_ALIAS(disp_layer_scal_test, __cmd_disp_layer_scal_test, disp_layer_scal_test);
149+
MSH_CMD_EXPORT_ALIAS(disp_layer_scal_test, __cmd_disp_layer_scal_test, disp_layer_scal_test);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_lbc_test.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,4 @@ int lbc_test(int argc, char **argv)
157157
return 0;
158158
}
159159

160-
161-
162-
163-
164-
FINSH_FUNCTION_EXPORT_ALIAS(lbc_test, __cmd_disp_lbc_test, disp lbc test);
165-
160+
MSH_CMD_EXPORT_ALIAS(lbc_test, __cmd_disp_lbc_test, disp lbc test);

bsp/allwinner/libraries/sunxi-hal/hal/test/disp2/disp_mem.c

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ struct test_mem_cfg
3131
char filename[32];
3232
};
3333

34-
static struct info_mm g_disp_mm[10];
34+
#define DISP_MEM_COUNT 10
35+
36+
static struct info_mm g_disp_mm[DISP_MEM_COUNT];
3537
static int g_disp_mem_id = -1;
3638

3739
#define DISP_TEST_BYTE_ALIGN(x) (((x + (4*1024-1)) >> 12) << 12)
@@ -72,6 +74,11 @@ static void disp_free(void *virt_addr, void *phys_addr, u32 num_bytes)
7274

7375
static int disp_mem_release(int sel)
7476
{
77+
if (sel < 0 || sel >= DISP_MEM_COUNT)
78+
{
79+
return -1;
80+
}
81+
7582
if (g_disp_mm[sel].info_base == NULL)
7683
return -1;
7784

@@ -89,8 +96,9 @@ static int disp_mem_request(int sel, u32 size)
8996

9097
uintptr_t phy_addr;
9198

92-
if ((sel >= 10) ||
93-
(g_disp_mm[sel].info_base != NULL)) {
99+
if ((sel < 0) || (sel >= DISP_MEM_COUNT) ||
100+
(g_disp_mm[sel].info_base != NULL))
101+
{
94102
printf("invalid param\n");
95103
return -1;
96104
}
@@ -115,8 +123,10 @@ static int disp_mem_request(int sel, u32 size)
115123

116124
u32 disp_mem_getadr(u32 memid)
117125
{
118-
if (memid < 10)
126+
if (memid < DISP_MEM_COUNT)
127+
{
119128
return g_disp_mm[memid].mem_start;
129+
}
120130
return 0;
121131
}
122132

@@ -129,17 +139,31 @@ int disp_mem(u32 mem_id, u32 width, u32 height, u32 clear_flag, char *filename)
129139
void *mem = NULL;
130140
unsigned long count = width*height;
131141
char *tmp;
142+
143+
if (mem_id >= DISP_MEM_COUNT)
144+
{
145+
printf("invalid mem_id\n");
146+
return -1;
147+
}
148+
132149
if(clear_flag) {
133150
/* release memory && clear layer */
134151
disp_mem_release(mem_id);
135152
return 0;
136153
}
137154

155+
if (filename == NULL)
156+
{
157+
printf("filename is null.\n");
158+
goto OUT;
159+
}
160+
138161
//for_test we use r g b to set color buffer
139-
if(filename[0] != 'r' && filename[0] != 'g' && filename[0] != 'b') {
140-
if(filename != NULL)
141-
fh = fopen(filename, "r");
142-
if(!fh) {
162+
if (filename[0] != 'r' && filename[0] != 'g' && filename[0] != 'b')
163+
{
164+
fh = fopen(filename, "r");
165+
if (!fh)
166+
{
143167
printf("open file %s fail. \n", filename);
144168
goto OUT;
145169
}
@@ -222,9 +246,16 @@ int parse_cmdline_and_alloc(int argc, char **argv)
222246
if ( ! strcmp(argv[i], "-file")) {
223247
if (argc > i+1) {
224248
i++;
225-
p->filename[0] = '\0';
226-
sprintf(p->filename,"%s",argv[i]);
227-
printf("filename=%s\n", argv[i]);
249+
if (rt_strlen(argv[i]) >= sizeof(p->filename))
250+
{
251+
printf("filename is too long!!\n");
252+
err++;
253+
}
254+
else
255+
{
256+
rt_strncpy(p->filename, argv[i], sizeof(p->filename));
257+
printf("filename=%s\n", argv[i]);
258+
}
228259
} else {
229260
printf("no file described!!\n");
230261
err ++;
@@ -254,6 +285,12 @@ int parse_cmdline_and_alloc(int argc, char **argv)
254285
i++;
255286
}
256287

288+
if (p->mem_id < 0 || p->mem_id >= DISP_MEM_COUNT)
289+
{
290+
printf("mem_id para error!\n");
291+
err++;
292+
}
293+
257294
if(err > 0) {
258295
printf("example : ./disp_mem -mem_id 0 -size 1280 800 -double 0 -file ./pic/ui_1280x800_double_151.bin\n");
259296
return -1;
@@ -264,5 +301,4 @@ int parse_cmdline_and_alloc(int argc, char **argv)
264301
}
265302
}
266303

267-
FINSH_FUNCTION_EXPORT_ALIAS(parse_cmdline_and_alloc, disp_mem, disp mem);
268-
304+
MSH_CMD_EXPORT_ALIAS(parse_cmdline_and_alloc, disp_mem, disp mem);

bsp/apm32/libraries/Drivers/drv_common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Change Logs:
77
* Date Author Notes
88
* 2020-08-20 Abbcc first version
9-
* 2022-03-04 stevetong459 FINSH_FUNCTION_EXPORT_ALIAS change to MSH_CMD_EXPORT for reboot function.
9+
* 2022-03-04 stevetong459 Use MSH_CMD_EXPORT for reboot function.
1010
*/
1111

1212
#include "drv_common.h"

bsp/at91/at91sam9260/platform/reset.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ void machine_shutdown(void)
3030
#ifdef RT_USING_FINSH
3131

3232
#include <finsh.h>
33-
FINSH_FUNCTION_EXPORT_ALIAS(rt_hw_cpu_reset, reset, restart the system);
3433

3534
#ifdef FINSH_USING_MSH
3635
int cmd_reset(int argc, char** argv)

0 commit comments

Comments
 (0)