Hey devs,
I hope the new rules we established will prevent something similar in
the future and I really hope this project will one day succeed. It's not
going to be an easy task, but it can be done. I wish you all best luck
to succeed.
However, the amount of effort more or less wasted, and personal reasons
made me decide that it's better for me to step back for now until
ReactOS some day reaches this point of maturity again. I basically don't
have the resources and energy to devote so much time, again.
Re-inventing the wheel already is controversial, but I personally can't
do it yet another time.
I've met many very talented people ever since I joined almost three
years ago, so it's very sad for me to leave most of this behind. Even
though there were disagreements occasionally, it was great fun for me to
collaborate and create something unique and outstanding. However, I'm
going to try to stay in touch at least.
I encourage everyone to stay if somehow possible and rebuild ReactOS!
Thanks for everything that was done for me and the countless hours of
fun I had with this project.
Best Regards,
Thomas
I was wondering if NTVFS from the Samba 4.0TP would be able to be
integrated with ReactOS? This might add some support for NTFS over
Fat32 or like file systems...
Inproved the implimentation of NdisWriteConfiguration(), by Crashfourit.
Index: drivers/net/ndis/ndis/config.c
===================================================================
--- drivers/net/ndis/ndis/config.c (revision 21005)
+++ drivers/net/ndis/ndis/config.c (working copy)
@@ -66,6 +66,18 @@
ULONG ParameterType = ParameterValue->ParameterType;
ULONG DataSize;
PVOID Data;
+
+ /*
+ The next few lines of code before teh first if statement are used when
+ ParameterType equals NdisParameterHexInteger or NdisParameterInteger.
+ This is done so that Buff can be used beyond the switch statement.
+ */
+ UNICODE_STRING buff;
+ WCHAR str[25];
+
+ Buff->Length=0;
+ Buff->MaximumLength = sizeof(str) / sizeof(str[0]);
+ Buff->Buffer=str;
if(ParameterType != NdisParameterInteger &&
ParameterType != NdisParameterHexInteger &&
@@ -81,12 +93,29 @@
/* reset parameter type to standard reg types */
switch(ParameterType)
{
- /* TODO: figure out what do do with these; are they different? */
+ /*
+ TODO: figure out what do do with these; are they different?
+ Done by Crashfourit
+ */
case NdisParameterHexInteger:
- case NdisParameterInteger:
- ParameterType = REG_SZ;
- Data = &ParameterValue->ParameterData.IntegerData;
- DataSize = sizeof(ULONG);
+ case NdisParameterInteger:
+ {
+ if (!NT_SUCCESS(RtlIntegerToUnicodeString(
+ ParameterValue->ParameterData.IntegerData,
+ ( ParameterType == NdisParameterHexInteger ) ? 16 : 10,
+ &buff))
+ )
+ {
+ *Status = NDIS_STATUS_FAILURE;
+ return;
+ }
+ else
+ {
+ ParameterType = REG_SZ;
+ Data = &Buff->Buffer;
+ DataSize = Buff->Length;
+ }
+ }
break;
case NdisParameterString:
Hey all,
As my exams are now over I will hopefully be having more free time
available to put into ReactOS security. I would like to perform a
security audit of the code base. I've jotted down a few thoughts and
suggestions of mine below and would appreciate feedback on them.
Methodology
I hope to work on the kernel mode code first, working up through the
layers up to application API level code. I feel this is the best
method because, as it has been mentioned before to me on IRC / email ,
some functions canot check the parameters that are passed down to
lower functions.
I understand the following code to run in kernel mode:
/lib/rtl/
/lib/string/
/lib/kjs/
/lib/freetype/
/lib/pseh/
/hal/
/drivers/
/subsys/win32k/
/ntoskrnl/
If you know of any more please let me know.
I was thinking of checking out an entire svn revision and updating
only after I had checked an entire library. What do other people
think on this?
I will predominatly be working just from the code source, but after
playing around with Doxygen I have found it to be incredibly useful
for quick referencing typedefs and function parameter calls.
What am I looking for?
I am only a single person, so code auditing will be a slow process at
the moment. I wish to check for the following vulnerabilities:
Incorrect null termination.
Buffer overflows.
Premature termination.
Lack of input validation.
Bad calculations.
Off by one / few.
Personally I feel this list of six common vulnerability types should
be enough to thwart the most common of attacks, but if anyone else
feels some other class of vulnerability is missing from the list
please let me know. Obviously if I find any other bugs then they will
be reported as well.
Reporting of errors?
How should I go about reporting the errors? I was previously told to
report all occasions of the incorrect uses of the RtlAllocateHeap
function under the same bug number (no 1110, some still unfixed). Is
this the preferred method for my code auditing results? I would like
to submit the bugs as quickly as possible, so I can keep my working
tree as close to possible to head, but this may mean submitting
multiple bug reports for the same problem. I think that the best
option is to submit similar bugs in the same module under the same
report, but open a new bug if the same vulnerability occurs in another
module. Thoughts?
These are just some of my ideas that are floating around in my head at
the moment. I would welcome all feedback on this matter and I think I
may create a wiki page with the same information on. Again, thoughts
on this would be nice as I haven't really used wiki's before.
Cheers,
Martin
I noticed that the implimentation of NdisReadConfiguration() is slightly
off, so I fixed it. The reason why this was so is located in the diff as
a comment.
Thanks.
Index: drivers/net/ndis/ndis/config.c
===================================================================
--- drivers/net/ndis/ndis/config.c (revision 20999)
+++ drivers/net/ndis/ndis/config.c (working copy)
@@ -493,8 +493,17 @@
str.Buffer = (PWCHAR)KeyInformation->Data;
(*ParameterValue)->ParameterType = ParameterType;
- *Status = RtlUnicodeStringToInteger(&str, 16, &(*ParameterValue)->ParameterData.IntegerData);
+
+ /*
+ If ParameterType is NdisParameterInteger then the base of str is decimal.
+ If ParameterType is NdisParameterHexInteger then the base of str is hexadecimal.
+ */
+ if (ParameterType == NdisParameterInteger)
+ *Status = RtlUnicodeStringToInteger(&str, 10, &(*ParameterValue)->ParameterData.IntegerData);
+ else if (ParameterType == NdisParameterHexInteger)
+ *Status = RtlUnicodeStringToInteger(&str, 16, &(*ParameterValue)->ParameterData.IntegerData);
ExFreePool(KeyInformation);
if(*Status != STATUS_SUCCESS)