mirror of
https://github.com/opencv/opencv.git
synced 2025-06-10 11:03:03 +08:00
Fix undefined behavior with wrong function pointers called.
Details here: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58006 runtime error: call to function (unknown) through pointer to incorrect function type 'void (*)(const unsigned char **, const int *, unsigned char **, const int *, int, int)'
This commit is contained in:
parent
1794cdc03c
commit
20784d3da2
@ -53,25 +53,25 @@ static void mixChannels8u( const uchar** src, const int* sdelta,
|
|||||||
mixChannels_(src, sdelta, dst, ddelta, len, npairs);
|
mixChannels_(src, sdelta, dst, ddelta, len, npairs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mixChannels16u( const ushort** src, const int* sdelta,
|
static void mixChannels16u( const uchar** src, const int* sdelta,
|
||||||
ushort** dst, const int* ddelta,
|
uchar** dst, const int* ddelta,
|
||||||
int len, int npairs )
|
int len, int npairs )
|
||||||
{
|
{
|
||||||
mixChannels_(src, sdelta, dst, ddelta, len, npairs);
|
mixChannels_((const ushort**)src, sdelta, (ushort**)dst, ddelta, len, npairs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mixChannels32s( const int** src, const int* sdelta,
|
static void mixChannels32s( const uchar** src, const int* sdelta,
|
||||||
int** dst, const int* ddelta,
|
uchar** dst, const int* ddelta,
|
||||||
int len, int npairs )
|
int len, int npairs )
|
||||||
{
|
{
|
||||||
mixChannels_(src, sdelta, dst, ddelta, len, npairs);
|
mixChannels_((const int**)src, sdelta, (int**)dst, ddelta, len, npairs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mixChannels64s( const int64** src, const int* sdelta,
|
static void mixChannels64s( const uchar** src, const int* sdelta,
|
||||||
int64** dst, const int* ddelta,
|
uchar** dst, const int* ddelta,
|
||||||
int len, int npairs )
|
int len, int npairs )
|
||||||
{
|
{
|
||||||
mixChannels_(src, sdelta, dst, ddelta, len, npairs);
|
mixChannels_((const int64**)src, sdelta, (int64**)dst, ddelta, len, npairs);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef void (*MixChannelsFunc)( const uchar** src, const int* sdelta,
|
typedef void (*MixChannelsFunc)( const uchar** src, const int* sdelta,
|
||||||
@ -81,9 +81,9 @@ static MixChannelsFunc getMixchFunc(int depth)
|
|||||||
{
|
{
|
||||||
static MixChannelsFunc mixchTab[] =
|
static MixChannelsFunc mixchTab[] =
|
||||||
{
|
{
|
||||||
(MixChannelsFunc)mixChannels8u, (MixChannelsFunc)mixChannels8u, (MixChannelsFunc)mixChannels16u,
|
mixChannels8u, mixChannels8u, mixChannels16u,
|
||||||
(MixChannelsFunc)mixChannels16u, (MixChannelsFunc)mixChannels32s, (MixChannelsFunc)mixChannels32s,
|
mixChannels16u, mixChannels32s, mixChannels32s,
|
||||||
(MixChannelsFunc)mixChannels64s, 0
|
mixChannels64s, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
return mixchTab[depth];
|
return mixchTab[depth];
|
||||||
|
Loading…
Reference in New Issue
Block a user