Fix buffer overflows in jp2/jpwl compress/decompress

This commit is contained in:
Jones 2018-08-03 11:34:10 -07:00
parent d2205ba2ee
commit 5b54ae7e51
4 changed files with 28 additions and 12 deletions

View File

@ -654,9 +654,13 @@ static int parse_cmdline_encoder(int argc, char **argv,
case 'O': { /* output format */ case 'O': { /* output format */
char outformat[50]; char outformat[50];
char *of = opj_optarg; char *of = opj_optarg;
if (strlen(opj_optarg) < sizeof(outformat)) {
sprintf(outformat, ".%s", of); sprintf(outformat, ".%s", of);
img_fol->set_out_format = 1; img_fol->set_out_format = 1;
parameters->cod_format = get_file_format(outformat); parameters->cod_format = get_file_format(outformat);
} else {
parameters->cod_format = -1;
}
switch (parameters->cod_format) { switch (parameters->cod_format) {
case J2K_CFMT: case J2K_CFMT:
case JP2_CFMT: case JP2_CFMT:

View File

@ -662,9 +662,13 @@ int parse_cmdline_decoder(int argc, char **argv,
case 'O': { /* output format */ case 'O': { /* output format */
char outformat[50]; char outformat[50];
char *of = opj_optarg; char *of = opj_optarg;
if (strlen(opj_optarg) < sizeof(outformat)) {
sprintf(outformat, ".%s", of); sprintf(outformat, ".%s", of);
img_fol->set_out_format = 1; img_fol->set_out_format = 1;
parameters->cod_format = get_file_format(outformat); parameters->cod_format = get_file_format(outformat);
} else {
parameters->cod_format = -1;
}
switch (parameters->cod_format) { switch (parameters->cod_format) {
case PGX_DFMT: case PGX_DFMT:
img_fol->out_format = "pgx"; img_fol->out_format = "pgx";

View File

@ -768,9 +768,13 @@ static int parse_cmdline_encoder(int argc, char **argv,
case 'O': { /* output format */ case 'O': { /* output format */
char outformat[50]; char outformat[50];
char *of = opj_optarg; char *of = opj_optarg;
if (strlen(opj_optarg) < sizeof(outformat)) {
sprintf(outformat, ".%s", of); sprintf(outformat, ".%s", of);
img_fol->set_out_format = 1; img_fol->set_out_format = 1;
parameters->cod_format = get_file_format(outformat); parameters->cod_format = get_file_format(outformat);
} else {
parameters->cod_format = -1;
}
switch (parameters->cod_format) { switch (parameters->cod_format) {
case J2K_CFMT: case J2K_CFMT:
case JP2_CFMT: case JP2_CFMT:

View File

@ -345,9 +345,13 @@ int parse_cmdline_decoder(int argc, char **argv, opj_dparameters_t *parameters,
case 'O': { /* output format */ case 'O': { /* output format */
char outformat[50]; char outformat[50];
char *of = opj_optarg; char *of = opj_optarg;
if (strlen(opj_optarg) < sizeof(outformat)) {
sprintf(outformat, ".%s", of); sprintf(outformat, ".%s", of);
img_fol->set_out_format = 1; img_fol->set_out_format = 1;
parameters->cod_format = get_file_format(outformat); parameters->cod_format = get_file_format(outformat);
} else {
parameters->cod_format = -1;
}
switch (parameters->cod_format) { switch (parameters->cod_format) {
case PGX_DFMT: case PGX_DFMT:
img_fol->out_format = "pgx"; img_fol->out_format = "pgx";