mirror of
https://github.com/asterisk/asterisk.git
synced 2026-07-01 12:39:36 -07:00
chan_dahdi: fix lower bound check with -ve integer conversion from a float
Lower bound of a 16bit signed int is -32768 not -32767 (closes issue ASTERISK-21744) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) ........ Merged revisions 387297 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@387298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
+24
-12
@@ -5127,9 +5127,12 @@ static void fill_txgain(struct dahdi_gains *g, float gain, float drc, int law)
|
||||
if (drc) {
|
||||
k = drc_sample(k, drc);
|
||||
}
|
||||
k = (float)k*linear_gain;
|
||||
if (k > 32767) k = 32767;
|
||||
if (k < -32767) k = -32767;
|
||||
k = (float)k * linear_gain;
|
||||
if (k > 32767) {
|
||||
k = 32767;
|
||||
} else if (k < -32768) {
|
||||
k = -32768;
|
||||
}
|
||||
g->txgain[j] = AST_LIN2A(k);
|
||||
} else {
|
||||
g->txgain[j] = j;
|
||||
@@ -5143,9 +5146,12 @@ static void fill_txgain(struct dahdi_gains *g, float gain, float drc, int law)
|
||||
if (drc) {
|
||||
k = drc_sample(k, drc);
|
||||
}
|
||||
k = (float)k*linear_gain;
|
||||
if (k > 32767) k = 32767;
|
||||
if (k < -32767) k = -32767;
|
||||
k = (float)k * linear_gain;
|
||||
if (k > 32767) {
|
||||
k = 32767;
|
||||
} else if (k < -32768) {
|
||||
k = -32768;
|
||||
}
|
||||
g->txgain[j] = AST_LIN2MU(k);
|
||||
|
||||
} else {
|
||||
@@ -5170,9 +5176,12 @@ static void fill_rxgain(struct dahdi_gains *g, float gain, float drc, int law)
|
||||
if (drc) {
|
||||
k = drc_sample(k, drc);
|
||||
}
|
||||
k = (float)k*linear_gain;
|
||||
if (k > 32767) k = 32767;
|
||||
if (k < -32767) k = -32767;
|
||||
k = (float)k * linear_gain;
|
||||
if (k > 32767) {
|
||||
k = 32767;
|
||||
} else if (k < -32768) {
|
||||
k = -32768;
|
||||
}
|
||||
g->rxgain[j] = AST_LIN2A(k);
|
||||
} else {
|
||||
g->rxgain[j] = j;
|
||||
@@ -5186,9 +5195,12 @@ static void fill_rxgain(struct dahdi_gains *g, float gain, float drc, int law)
|
||||
if (drc) {
|
||||
k = drc_sample(k, drc);
|
||||
}
|
||||
k = (float)k*linear_gain;
|
||||
if (k > 32767) k = 32767;
|
||||
if (k < -32767) k = -32767;
|
||||
k = (float)k * linear_gain;
|
||||
if (k > 32767) {
|
||||
k = 32767;
|
||||
} else if (k < -32768) {
|
||||
k = -32768;
|
||||
}
|
||||
g->rxgain[j] = AST_LIN2MU(k);
|
||||
} else {
|
||||
g->rxgain[j] = j;
|
||||
|
||||
Reference in New Issue
Block a user