IP Library Patent Application 14471806
Patent Application
App. No. 14/471,806

System and Method for Improved Memory Allocation in a Computer System

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
14/471,806
Abstract

The present invention relates to a system and method for improved memory allocation in a computer system. The system and method reduces or eliminates vulnerabilities that would otherwise exist due to use-after-free situations involving memory, thereby enhancing the security of the computer system.

Claims (45)

1 . A computer system, comprising:

a processor executing a first set of code and a second set of code; and

a memory coupled to the processor for storing data;

wherein the first set of code comprises instructions to generate a first pool within the memory and a second pool within the memory, the first pool corresponding to a first set of addresses within the memory and the second pool corresponding to a second set of addresses within the memory, wherein the first set of addresses and the second set of addresses do not overlap, and wherein pointers of a first type within the second set of code are assigned to the first pool and pointers of a second type within the second set of code are assigned to the second pool.

2 . The computer system of claim 1 , wherein the pointers are assigned to the first pool or the second pool based on criteria comprising a current call stack.

3 . The computer system of claim 2 , wherein the criteria further comprises allocation size.

4 . The computer system of claim 1 , wherein the processor executes an operating system and the first set of code is invoked through a hook in the operating system.

5 . The computer system of claim 1 , wherein the operating system comprises a memory allocator, and the first set of code is invoked instead of the memory allocator to allocate memory to a pointer.

6 . The computer system of claim 1 , wherein the processor executes an operating system and the first set of code is part of the operating system.

7 . The computer system of claim 1 , wherein the processor executes an operating system and the first set of code is part of a code library that executes in conjunction with the operating system.

8 . The computer system of claim 1 , wherein the first type is a first object.

9 . The computer system of claim 8 , wherein the second type is a second object.

10 . A method of allocating memory to a plurality of pointers within a computer system, comprising:

executing, on a processor, a first set of code;

executing, on the processor, a second set of code containing a first pointer of a first type and a second pointer of a second type different than the first type;

generating, by the processor executing the first set of code, a first pool within a memory and a second pool within the memory, the first pool corresponding a first set of addresses within the memory and the second pool corresponding to a second set of addresses within the memory, wherein the first set of addresses and the second set of addresses do not overlap; and

assigning, by the processor executing the first set of code, the first pointer to the first pool and the second pointer to the second pool.

11 . The method of claim 10 , wherein the assigning step is performed based on criteria comprising a current call stack.

12 . The method of claim 11 , wherein the criteria further comprises allocation size.

13 . The method of claim 10 , further comprising:

executing, on the processor, an operating system;

invoking, by the processor, the first set of code in response to a hook in the operating system.

14 . The method of claim 13 , wherein the operating system comprises a memory allocator, and the first set of code is invoked instead of the memory allocator.

15 . The method of claim 10 , further comprising: executing, on the processor, an operating system, wherein the first set of code is part of the operating system.

16 . The method of claim 10 , further comprising: executing, on the processor, an operating system, wherein the first set of code is part of a code library that executes in conjunction with the operating system.

17 . The method of claim 10 , wherein the first type is a first object.

18 . The method of claim 17 , wherein the second type is a second object.

19 . A method of allocating memory to a plurality of pointers within a computer system, comprising:

executing, on a processor, a first set of code;

executing, on the processor, a second set of code containing a first pointer of a first type and a second pointer of a second type different than the first type;

generating, by the processor executing the first set of code, a first pool within a memory and a second pool within the memory, the first pool corresponding to a first set of addresses within the memory and the second pool corresponding to a second set of addresses within the memory, wherein the first set of addresses and the second set of addresses do not overlap;

assigning, by the processor executing the first set of code, the first pointer to the first pool and the second pointer to the second pool;

freeing, by the processor executing the second code, the first pointer;

executing, by the processor, code containing the first pointer; and

assigning, by the processor executing the first set of code, the first pointer to the first pool.

20 . The method of claim 19 , wherein both assigning steps are performed based on criteria comprising a current call stack.

21 . The method of claim 20 , wherein the criteria further comprises allocation size.

22 . The method of claim 19 , further comprising:

executing, on the processor, an operating system;

invoking, by the processor, the first set of code in response to a hook in the operating system.

23 . The method of claim 22 , wherein the operating system comprises a memory allocator, and the first set of code is invoked instead of the memory allocator.

24 . The method of claim 19 , further comprising: executing, on the processor, an operating system, wherein the first set of code is part of the operating system.

25 . The method of claim 19 , further comprising: executing, on the processor, an operating system, wherein the first set of code is part of a code library that executes in conjunction with the operating system.

26 . The method of claim 19 , wherein the first type is a first object.

27 . The method of claim 26 , wherein the second type is a second object.

Assignments (2)
SECURITY INTEREST Recorded Feb 17, 2017
From: ENDGAME, INC.; ONYXWARE CORPORATION; ENDGAME SYSTEMS, LLC
To: WESTERN ALLIANCE BANK
Reel/Frame 041290/0597 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2014
From: LANDAU, GABRIEL D.; RIGGLE, ZACH; PIERCE, CODY
To: ENDGAME, INC.
Reel/Frame 033633/0719 →