View | Details | Raw Unified | Return to bug 277115 | Differences between
and this patch

Collapse All | Expand All

(-)b/sysutils/cdrdao/Makefile (+2 lines)
Lines 1-5 Link Here
1
PORTNAME=	cdrdao
1
PORTNAME=	cdrdao
2
DISTVERSION=	1_2_5
2
DISTVERSION=	1_2_5
3
PORTREVISION=	1
3
CATEGORIES=	sysutils audio
4
CATEGORIES=	sysutils audio
4
MASTER_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/releases/download/rel_${DISTVERSION}/ \
5
MASTER_SITES=	https://github.com/${PORTNAME}/${PORTNAME}/releases/download/rel_${DISTVERSION}/ \
5
		SF/${PORTNAME}/rel_${DISTVERSION}
6
		SF/${PORTNAME}/rel_${DISTVERSION}
Lines 21-26 CONFIGURE_ARGS= --with-gcdmaster=no \ Link Here
21
		--without-pcctsinc \
22
		--without-pcctsinc \
22
		--with-posix-threads=no \
23
		--with-posix-threads=no \
23
		--with-scglib
24
		--with-scglib
25
GNU_CONFIGURE_MANPREFIX=	${PREFIX}/share
24
26
25
OPTIONS_DEFINE=		DOCS TOC2MP3 MP3OGG
27
OPTIONS_DEFINE=		DOCS TOC2MP3 MP3OGG
26
OPTIONS_DEFAULT=	MP3OGG
28
OPTIONS_DEFAULT=	MP3OGG
(-)b/sysutils/cdrdao/files/patch-dao_CDD2600.cc (+31 lines)
Added Link Here
1
--- dao/CDD2600.cc.orig	2024-02-17 17:56:50 UTC
2
+++ dao/CDD2600.cc
3
@@ -641,6 +641,7 @@ CdRawToc *CDD2600::getRawToc(int sessionNr, int *len)
4
 {
5
   unsigned char cmd[10];
6
   unsigned short dataLen;
7
+  unsigned short bufLen;
8
   unsigned char *data = NULL;;
9
   unsigned char reqData[4]; // buffer for requestion the actual length
10
   unsigned char *p = NULL;
11
@@ -663,16 +664,18 @@ CdRawToc *CDD2600::getRawToc(int sessionNr, int *len)
12
   }
13
 
14
   dataLen = ((reqData[0] << 8) | reqData[1]) + 2;
15
+  bufLen = dataLen + (dataLen % 2);
16
+  assert(bufLen >= 2);
17
 
18
   log_message(5, "Raw toc data len: %d", dataLen);
19
 
20
-  data = new unsigned char[dataLen];
21
+  data = new unsigned char[bufLen];
22
   
23
   // read disk toc
24
   cmd[7] = dataLen >> 8;
25
   cmd[8] = dataLen;
26
 
27
-  if (sendCmd(cmd, 10, NULL, 0, data, dataLen) != 0) {
28
+  if (sendCmd(cmd, 10, NULL, 0, data, bufLen) != 0) {
29
     log_message(-2, "Cannot read raw disk toc.");
30
     delete[] data;
31
     return NULL;
(-)b/sysutils/cdrdao/files/patch-dao_GenericMMC.cc (+31 lines)
Added Link Here
1
--- dao/GenericMMC.cc.orig	2023-02-03 14:46:06 UTC
2
+++ dao/GenericMMC.cc
3
@@ -2055,6 +2055,7 @@ CdRawToc *GenericMMC::getRawToc(int sessionNr, int *le
4
 {
5
   u8 cmd[10];
6
   u16 dataLen;
7
+  u16 bufLen;
8
   u8 *data = NULL;;
9
   u8 reqData[4]; // buffer for requestion the actual length
10
   u8 *p;
11
@@ -2076,16 +2077,18 @@ CdRawToc *GenericMMC::getRawToc(int sessionNr, int *le
12
   }
13
 
14
   dataLen = ((reqData[0] << 8) | reqData[1]) + 2;
15
+  bufLen = dataLen + (dataLen % 2);
16
+  assert(bufLen >= 2);
17
   
18
   log_message(4, "Raw toc data len: %d", dataLen);
19
 
20
-  data = new u8[dataLen];
21
+  data = new u8[bufLen];
22
   
23
   // read disk toc
24
   cmd[7] = dataLen >> 8;
25
   cmd[8] = dataLen;
26
 
27
-  if (sendCmd(cmd, 10, NULL, 0, data, dataLen) != 0) {
28
+  if (sendCmd(cmd, 10, NULL, 0, data, bufLen) != 0) {
29
     log_message(-2, "Cannot read disk toc.");
30
     delete[] data;
31
     return NULL;
(-)b/sysutils/cdrdao/files/patch-dao_PlextorReader.cc (+30 lines)
Added Link Here
1
--- dao/PlextorReader.cc.orig	2024-02-17 17:57:48 UTC
2
+++ dao/PlextorReader.cc
3
@@ -430,6 +430,7 @@ CdRawToc *PlextorReader::getRawToc(int sessionNr, int 
4
 {
5
   unsigned char cmd[10];
6
   unsigned short dataLen;
7
+  unsigned short bufLen;
8
   unsigned char *data = NULL;;
9
   unsigned char reqData[4]; // buffer for requestion the actual length
10
   unsigned char *p = NULL;
11
@@ -451,16 +452,17 @@ CdRawToc *PlextorReader::getRawToc(int sessionNr, int 
12
   }
13
 
14
   dataLen = ((reqData[0] << 8) | reqData[1]) + 2;
15
+  bufLen = dataLen + (dataLen % 2);
16
 
17
   log_message(4, "Raw toc data len: %d", dataLen);
18
 
19
-  data = new unsigned char[dataLen];
20
+  data = new unsigned char[bufLen];
21
   
22
   // read disk toc
23
   cmd[7] = dataLen >> 8;
24
   cmd[8] = dataLen;
25
 
26
-  if (sendCmd(cmd, 10, NULL, 0, data, dataLen) != 0) {
27
+  if (sendCmd(cmd, 10, NULL, 0, data, bufLen) != 0) {
28
     log_message(-2, "Cannot read raw disk toc.");
29
     delete[] data;
30
     return NULL;
(-)b/sysutils/cdrdao/files/patch-dao_ScsiIf-freebsd-cam.cc (+20 lines)
Added Link Here
1
--- dao/ScsiIf-freebsd-cam.cc.orig	2023-01-25 14:30:35 UTC
2
+++ dao/ScsiIf-freebsd-cam.cc
3
@@ -123,10 +123,15 @@ int ScsiIf::sendCmd(const unsigned char *cmd, int cmdL
4
 		data_len = dataOutLen;
5
 		flags = CAM_DIR_OUT;
6
 	}
7
-	else if (dataIn && dataInLen > 0) {
8
+	else if (dataIn && dataInLen > 1) {
9
 		data_ptr = dataIn;
10
-		data_len = dataInLen;
11
+		data_len = dataInLen - (dataInLen % 2);
12
 		flags = CAM_DIR_IN;
13
+	}
14
+	else {
15
+		data_len = 0;
16
+		data_ptr = (u_int8_t *)0;
17
+		flags = CAM_DIR_NONE;
18
 	}
19
 
20
 	cam_fill_csio(&impl_->ccb->csio,
(-)b/sysutils/cdrdao/files/patch-dao_SonyCDU920.cc (+31 lines)
Added Link Here
1
--- dao/SonyCDU920.cc.orig	2024-02-17 17:58:18 UTC
2
+++ dao/SonyCDU920.cc
3
@@ -779,6 +779,7 @@ CdRawToc *SonyCDU920::getRawToc(int sessionNr, int *le
4
 {
5
   unsigned char cmd[10];
6
   unsigned short dataLen;
7
+  unsigned short bufLen;
8
   unsigned char *data = NULL;;
9
   unsigned char reqData[4]; // buffer for requestion the actual length
10
   unsigned char *p;
11
@@ -800,16 +801,18 @@ CdRawToc *SonyCDU920::getRawToc(int sessionNr, int *le
12
   }
13
 
14
   dataLen = ((reqData[0] << 8) | reqData[1]) + 2;
15
+  bufLen = dataLen + (dataLen % 2);
16
+  assert(bufLen >= 2);
17
   
18
   log_message(4, "Raw toc data len: %d", dataLen);
19
 
20
-  data = new unsigned char[dataLen];
21
+  data = new unsigned char[bufLen];
22
   
23
   // read disk toc
24
   cmd[7] = dataLen >> 8;
25
   cmd[8] = dataLen;
26
 
27
-  if (sendCmd(cmd, 10, NULL, 0, data, dataLen) != 0) {
28
+  if (sendCmd(cmd, 10, NULL, 0, data, bufLen) != 0) {
29
     log_message(-2, "Cannot read disk toc.");
30
     delete[] data;
31
     return NULL;
(-)b/sysutils/cdrdao/files/patch-dao_TeacCdr55.cc (+33 lines)
Added Link Here
1
--- dao/TeacCdr55.cc.orig	2024-02-17 17:59:23 UTC
2
+++ dao/TeacCdr55.cc
3
@@ -1264,6 +1264,7 @@ CdRawToc *TeacCdr55::getRawToc(int sessionNr, int *len
4
 {
5
   unsigned char cmd[10];
6
   unsigned short dataLen;
7
+  unsigned short bufLen;
8
   unsigned char *data = NULL;;
9
   unsigned char reqData[4]; // buffer for requestion the actual length
10
   unsigned char *p = NULL;
11
@@ -1285,19 +1286,20 @@ CdRawToc *TeacCdr55::getRawToc(int sessionNr, int *len
12
   }
13
 
14
   dataLen = ((reqData[0] << 8) | reqData[1]) + 2;
15
+  bufLen = dataLen + (dataLen % 2);
16
 
17
   log_message(4, "Raw toc data len: %d", dataLen);
18
 
19
   if (dataLen == 4)
20
     return NULL;
21
 
22
-  data = new unsigned char[dataLen];
23
+  data = new unsigned char[bufLen];
24
   
25
   // read disk toc
26
   cmd[7] = dataLen >> 8;
27
   cmd[8] = dataLen;
28
 
29
-  if (sendCmd(cmd, 10, NULL, 0, data, dataLen) != 0) {
30
+  if (sendCmd(cmd, 10, NULL, 0, data, bufLen) != 0) {
31
     log_message(-2, "Cannot read raw disk toc.");
32
     delete[] data;
33
     return NULL;
(-)b/sysutils/cdrdao/pkg-plist (-5 / +4 lines)
Lines 4-13 bin/toc2cddb Link Here
4
bin/toc2cue
4
bin/toc2cue
5
%%TOC2MP3%%bin/toc2mp3
5
%%TOC2MP3%%bin/toc2mp3
6
@postunexec if [ -f %D/etc/cdrdao.conf ]; then echo "If permanently deleting this package, %D/etc/cdrdao.conf must be removed manually."; fi
6
@postunexec if [ -f %D/etc/cdrdao.conf ]; then echo "If permanently deleting this package, %D/etc/cdrdao.conf must be removed manually."; fi
7
man/man1/cdrdao.1.gz
7
share/man/man1/cdrdao.1.gz
8
man/man1/cue2toc.1.gz
8
share/man/man1/cue2toc.1.gz
9
man/man1/toc2cddb.1.gz
9
share/man/man1/toc2cddb.1.gz
10
man/man1/toc2cue.1.gz
10
share/man/man1/toc2cue.1.gz
11
%%DATADIR%%/drivers
11
%%DATADIR%%/drivers
12
%%PORTDOCS%%%%DOCSDIR%%/CREDITS
12
%%PORTDOCS%%%%DOCSDIR%%/CREDITS
13
%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
13
%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
14
- 

Return to bug 277115