Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
37046546
Commit
37046546
authored
May 06, 2011
by
Marcus Meissner
Committed by
Alexandre Julliard
May 09, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oleaut32: Fixed offset calculation (Coverity).
parent
f555c2d8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
24 deletions
+24
-24
typelib2.c
dlls/oleaut32/typelib2.c
+14
-14
write_msft.c
tools/widl/write_msft.c
+10
-10
No files found.
dlls/oleaut32/typelib2.c
View file @
37046546
...
...
@@ -173,7 +173,7 @@ typedef struct tagICreateTypeLib2Impl
MSFT_Header
typelib_header
;
INT
helpStringDll
;
MSFT_pSeg
typelib_segdir
[
MSFT_SEG_MAX
];
char
*
typelib_segment_data
[
MSFT_SEG_MAX
];
unsigned
char
*
typelib_segment_data
[
MSFT_SEG_MAX
];
int
typelib_segment_block_length
[
MSFT_SEG_MAX
];
int
typelib_guids
;
/* Number of defined typelib guids */
...
...
@@ -520,7 +520,7 @@ static int ctl2_encode_string(
* Converts string stored in typelib data to unicode.
*/
static
void
ctl2_decode_string
(
char
*
data
,
/* [I] String to be decoded */
unsigned
char
*
data
,
/* [I] String to be decoded */
WCHAR
**
string
)
/* [O] Decoded string */
{
int
i
,
length
;
...
...
@@ -569,7 +569,7 @@ static int ctl2_alloc_segment(
}
while
((
This
->
typelib_segdir
[
segment
].
length
+
size
)
>
This
->
typelib_segment_block_length
[
segment
])
{
char
*
block
;
unsigned
char
*
block
;
block_size
=
This
->
typelib_segment_block_length
[
segment
];
block
=
heap_realloc
(
This
->
typelib_segment_data
[
segment
],
block_size
<<
1
);
...
...
@@ -580,7 +580,7 @@ static int ctl2_alloc_segment(
ICreateTypeInfo2Impl
*
typeinfo
;
for
(
typeinfo
=
This
->
typeinfos
;
typeinfo
;
typeinfo
=
typeinfo
->
next_typeinfo
)
{
typeinfo
->
typeinfo
=
(
void
*
)
&
block
[((
char
*
)
typeinfo
->
typeinfo
)
-
This
->
typelib_segment_data
[
segment
]];
typeinfo
->
typeinfo
=
(
void
*
)
&
block
[((
unsigned
char
*
)
typeinfo
->
typeinfo
)
-
This
->
typelib_segment_data
[
segment
]];
}
}
...
...
@@ -745,14 +745,14 @@ static int ctl2_alloc_string(
{
int
length
;
int
offset
;
char
*
string_space
;
unsigned
char
*
string_space
;
char
*
encoded_string
;
length
=
ctl2_encode_string
(
This
,
string
,
&
encoded_string
);
for
(
offset
=
0
;
offset
<
This
->
typelib_segdir
[
MSFT_SEG_STRING
].
length
;
offset
+=
(((
(
This
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
1
]
<<
8
)
&
0xff
)
|
(
This
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
0
]
&
0xff
)
)
+
5
)
&
~
3
)
{
offset
+=
(((
This
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
1
]
<<
8
)
|
This
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
0
]
)
+
5
)
&
~
3
)
{
if
(
!
memcmp
(
encoded_string
,
This
->
typelib_segment_data
[
MSFT_SEG_STRING
]
+
offset
,
length
))
return
offset
;
}
...
...
@@ -832,8 +832,8 @@ static int ctl2_alloc_importfile(
encoded_string
[
0
]
|=
1
;
for
(
offset
=
0
;
offset
<
This
->
typelib_segdir
[
MSFT_SEG_IMPORTFILES
].
length
;
offset
+=
(((((
(
This
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xd
]
<<
8
)
&
0xff00
)
|
(
This
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xc
]
&
0xff
)
)
>>
2
)
+
5
)
&
0xfffc
)
+
0xc
)
{
offset
+=
(((((
This
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xd
]
<<
8
)
|
This
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xc
]
)
>>
2
)
+
5
)
&
0xfffc
)
+
0xc
)
{
if
(
!
memcmp
(
encoded_string
,
This
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
]
+
offset
+
0xc
,
length
))
return
offset
;
}
...
...
@@ -1009,7 +1009,7 @@ static HRESULT ctl2_decode_variant(
int
data_offs
,
/* [I] Offset within the data array, or the encoded value itself */
VARIANT
*
value
)
/* [O] Decoded value */
{
char
*
encoded_data
;
unsigned
char
*
encoded_data
;
VARTYPE
type
;
if
(
data_offs
&
0x80000000
)
{
...
...
@@ -2338,7 +2338,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetFuncAndParamNames(
ICreateTypeInfo2Impl
*
This
=
(
ICreateTypeInfo2Impl
*
)
iface
;
CyclicList
*
iter
,
*
iter2
;
int
offset
,
len
,
i
;
char
*
namedata
;
unsigned
char
*
namedata
;
TRACE
(
"(%p %d %p %d)
\n
"
,
This
,
index
,
names
,
cNames
);
...
...
@@ -2358,7 +2358,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetFuncAndParamNames(
return
TYPE_E_ELEMENTNOTFOUND
;
TRACE
(
"function name %s
\n
"
,
debugstr_w
(
names
[
0
]));
len
=
ctl2_encode_name
(
This
->
typelib
,
names
[
0
],
&
namedata
);
len
=
ctl2_encode_name
(
This
->
typelib
,
names
[
0
],
(
char
**
)
&
namedata
);
for
(
iter2
=
This
->
typedata
->
next
->
next
;
iter2
!=
This
->
typedata
->
next
;
iter2
=
iter2
->
next
)
{
int
cmp
=
memcmp
(
namedata
,
This
->
typelib
->
typelib_segment_data
[
MSFT_SEG_NAME
]
+
iter2
->
name
+
8
,
len
);
...
...
@@ -2409,7 +2409,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetVarName(
ICreateTypeInfo2Impl
*
This
=
(
ICreateTypeInfo2Impl
*
)
iface
;
CyclicList
*
iter
;
int
offset
,
i
;
char
*
namedata
;
unsigned
char
*
namedata
;
TRACE
(
"(%p,%d,%s)
\n
"
,
This
,
index
,
debugstr_w
(
szName
));
...
...
@@ -3619,7 +3619,7 @@ static HRESULT WINAPI ITypeInfo2_fnGetRefTypeInfo(
impfile
=
(
MSFT_ImpFile
*
)
&
This
->
typelib
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
impinfo
->
oImpFile
];
guid
=
(
MSFT_GuidEntry
*
)
&
This
->
typelib
->
typelib_segment_data
[
MSFT_SEG_GUID
][
impinfo
->
oGuid
];
ctl2_decode_string
(
impfile
->
filename
,
&
filename
);
ctl2_decode_string
(
(
unsigned
char
*
)
impfile
->
filename
,
&
filename
);
hres
=
LoadTypeLib
(
filename
,
&
tl
);
if
(
FAILED
(
hres
))
...
...
tools/widl/write_msft.c
View file @
37046546
...
...
@@ -84,7 +84,7 @@ typedef struct _msft_typelib_t
typelib_t
*
typelib
;
MSFT_Header
typelib_header
;
MSFT_pSeg
typelib_segdir
[
MSFT_SEG_MAX
];
char
*
typelib_segment_data
[
MSFT_SEG_MAX
];
unsigned
char
*
typelib_segment_data
[
MSFT_SEG_MAX
];
int
typelib_segment_block_length
[
MSFT_SEG_MAX
];
INT
typelib_typeinfo_offsets
[
0x200
];
/* Hope that's enough. */
...
...
@@ -399,7 +399,7 @@ static int ctl2_alloc_segment(
}
while
((
typelib
->
typelib_segdir
[
segment
].
length
+
size
)
>
typelib
->
typelib_segment_block_length
[
segment
])
{
char
*
block
;
unsigned
char
*
block
;
block_size
=
typelib
->
typelib_segment_block_length
[
segment
];
block
=
xrealloc
(
typelib
->
typelib_segment_data
[
segment
],
block_size
<<
1
);
...
...
@@ -409,7 +409,7 @@ static int ctl2_alloc_segment(
msft_typeinfo_t
*
typeinfo
;
for
(
typeinfo
=
typelib
->
typeinfos
;
typeinfo
;
typeinfo
=
typeinfo
->
next_typeinfo
)
{
typeinfo
->
typeinfo
=
(
void
*
)
&
block
[((
char
*
)
typeinfo
->
typeinfo
)
-
typelib
->
typelib_segment_data
[
segment
]];
typeinfo
->
typeinfo
=
(
void
*
)
&
block
[((
unsigned
char
*
)
typeinfo
->
typeinfo
)
-
typelib
->
typelib_segment_data
[
segment
]];
}
}
...
...
@@ -570,14 +570,14 @@ static int ctl2_alloc_string(
{
int
length
;
int
offset
;
char
*
string_space
;
unsigned
char
*
string_space
;
char
*
encoded_string
;
length
=
ctl2_encode_string
(
string
,
&
encoded_string
);
for
(
offset
=
0
;
offset
<
typelib
->
typelib_segdir
[
MSFT_SEG_STRING
].
length
;
offset
+=
(((
(
typelib
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
1
]
<<
8
)
&
0xff
)
|
(
typelib
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
0
]
&
0xff
)
)
+
5
)
&
~
3
)
{
offset
+=
(((
typelib
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
1
]
<<
8
)
|
typelib
->
typelib_segment_data
[
MSFT_SEG_STRING
][
offset
+
0
]
)
+
5
)
&
~
3
)
{
if
(
!
memcmp
(
encoded_string
,
typelib
->
typelib_segment_data
[
MSFT_SEG_STRING
]
+
offset
,
length
))
return
offset
;
}
...
...
@@ -653,8 +653,8 @@ static int alloc_importfile(
encoded_string
[
0
]
|=
1
;
for
(
offset
=
0
;
offset
<
typelib
->
typelib_segdir
[
MSFT_SEG_IMPORTFILES
].
length
;
offset
+=
(((
(
typelib
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xd
]
<<
8
)
&
0xff
)
|
(
typelib
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xc
]
&
0xff
)
)
>>
2
)
+
0xc
)
{
offset
+=
(((
typelib
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xd
]
<<
8
)
|
typelib
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
][
offset
+
0xc
]
)
>>
2
)
+
0xc
)
{
if
(
!
memcmp
(
encoded_string
,
typelib
->
typelib_segment_data
[
MSFT_SEG_IMPORTFILES
]
+
offset
+
0xc
,
length
))
return
offset
;
}
...
...
@@ -1267,7 +1267,7 @@ static HRESULT add_func_desc(msft_typeinfo_t* typeinfo, var_t *func, int index)
int
decoded_size
,
extra_attr
=
0
;
int
num_params
=
0
,
num_optional
=
0
,
num_defaults
=
0
;
var_t
*
arg
;
char
*
namedata
;
unsigned
char
*
namedata
;
const
attr_t
*
attr
;
unsigned
int
funcflags
=
0
,
callconv
=
4
/* CC_STDCALL */
;
unsigned
int
funckind
,
invokekind
=
1
/* INVOKE_FUNC */
;
...
...
@@ -1611,7 +1611,7 @@ static HRESULT add_var_desc(msft_typeinfo_t *typeinfo, UINT index, var_t* var)
int
alignment
;
int
varflags
=
0
;
const
attr_t
*
attr
;
char
*
namedata
;
unsigned
char
*
namedata
;
int
var_num
=
(
typeinfo
->
typeinfo
->
cElement
>>
16
)
&
0xffff
;
chat
(
"add_var_desc(%d, %s)
\n
"
,
index
,
var
->
name
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment