sg3_utils/0004-sg_ses-fix-crash-when-m-LEN-252.patch
wangxiaomeng 902e900ad0 sg_ses: fix crash when 'm LEN' < 252
fix issue: https://gitee.com/src-openeuler/sg3_utils/issues/I5G05L
memset enc_stat_rsp by its true length

Signed-off-by: wangxiaomeng <wangxiaomeng@kylinos.cn>
2022-07-11 16:02:59 +08:00

64 lines
2.1 KiB
Diff

From bfbefdf2d9aa12107d08d796d6fc78862ab85402 Mon Sep 17 00:00:00 2001
From: Douglas Gilbert <dgilbert@interlog.com>
Date: Sun, 1 Aug 2021 03:14:05 +0000
Subject: [PATCH] sg_ses: fix crash when 'm LEN' < 252
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@907 6180dd3e-e324-4e3e-922d-17de1ae2f315
fix issue:https://gitee.com/src-openeuler/sg3_utils/issues/I5G05L
memset enc_stat_rsp by its true length
Signed-off-by: wangxiaomeng <wangxiaomeng@kylinos.cn>
---
src/sg_ses.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/sg_ses.c b/src/sg_ses.c
index b9ac2e4..701359b 100644
--- a/src/sg_ses.c
+++ b/src/sg_ses.c
@@ -5530,7 +5530,7 @@ int
main(int argc, char * argv[])
{
bool have_cgs = false;
- int k, d_len, res, resid, vb;
+ int k, n, d_len, res, resid, vb;
int sg_fd = -1;
int pd_type = 0;
int ret = 0;
@@ -5764,15 +5764,17 @@ main(int argc, char * argv[])
}
}
clear_scsi_pt_obj(ptvp);
- memset(enc_stat_rsp, 0, 4096);
+ memset(enc_stat_rsp, 0, enc_stat_rsp_sz);
}
#endif
if (ptvp) {
- ret = sg_ll_request_sense_pt(ptvp, false, enc_stat_rsp,
- REQUEST_SENSE_RESP_SZ, ! op->quiet, vb);
+ n = (enc_stat_rsp_sz < REQUEST_SENSE_RESP_SZ) ? enc_stat_rsp_sz :
+ REQUEST_SENSE_RESP_SZ;
+ ret = sg_ll_request_sense_pt(ptvp, false, enc_stat_rsp, n,
+ ! op->quiet, vb);
if (0 == ret) {
- int sense_len = REQUEST_SENSE_RESP_SZ - get_scsi_pt_resid(ptvp);
+ int sense_len = n - get_scsi_pt_resid(ptvp);
struct sg_scsi_sense_hdr ssh;
if ((sense_len > 7) && sg_scsi_normalize_sense(enc_stat_rsp,
@@ -5801,7 +5803,7 @@ main(int argc, char * argv[])
" problems ahead\n", ret);
}
clear_scsi_pt_obj(ptvp);
- memset(enc_stat_rsp, 0, REQUEST_SENSE_RESP_SZ);
+ memset(enc_stat_rsp, 0, enc_stat_rsp_sz);
}
if (op->nickname_str)
--
2.27.0