mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
Candidate release of source code.
This commit is contained in:
parent
db81e6b3b0
commit
79d8f164f8
12449 changed files with 2800756 additions and 16 deletions
|
@ -0,0 +1,64 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#include "Gadget.h"
|
||||
#include "iostream"
|
||||
#include "ostream"
|
||||
#include "stdio.h"
|
||||
|
||||
Gadget::Gadget(char *gname)
|
||||
{
|
||||
this->name = gname;
|
||||
this->deployed = false;
|
||||
this->type = 0;
|
||||
this->workingOn = NULL;
|
||||
}
|
||||
|
||||
char *Gadget::getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
bool Gadget::isDeployed()
|
||||
{
|
||||
return deployed;
|
||||
}
|
||||
|
||||
int Gadget::getType()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
|
||||
void Gadget::use(Person *person)
|
||||
{
|
||||
if (deployed) {
|
||||
return;
|
||||
}
|
||||
|
||||
deployed = true;
|
||||
workingOn = person;
|
||||
}
|
||||
|
||||
void Gadget::print() {
|
||||
char *depstr = (deployed == false ? "is not" : "is");
|
||||
char *who = (deployed == false ? "anyone" : workingOn->name);
|
||||
printf("%s %s deployed on %s\n", name, depstr, who);
|
||||
}
|
||||
|
||||
|
||||
Gadget::~Gadget(void)
|
||||
{
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "Wallace.h"
|
||||
|
||||
class Gadget
|
||||
{
|
||||
char *name;
|
||||
int type;
|
||||
bool deployed;
|
||||
Person *workingOn;
|
||||
|
||||
public:
|
||||
Gadget(char *name);
|
||||
void use (Person *person);
|
||||
bool isDeployed ();
|
||||
char * getName ();
|
||||
int getType ();
|
||||
void print();
|
||||
|
||||
public:
|
||||
~Gadget(void);
|
||||
};
|
|
@ -0,0 +1,74 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
// WinHelloCPP.cpp : Defines the entry point for the application.
|
||||
//
|
||||
|
||||
#include "Wallace.h"
|
||||
#include "Gadget.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
Person *personList = NULL;
|
||||
|
||||
void addPeople(Person **list) {
|
||||
addPerson(list, "Lord Victor Quartermaine");
|
||||
addPerson(list, "Lady Tottington");
|
||||
addPerson(list, "Were Rabbit");
|
||||
addPerson(list, "Rabbit");
|
||||
addPerson(list, "Gromit");
|
||||
addPerson(list, "Wallace");
|
||||
}
|
||||
|
||||
void initializePeople(Person *people) {
|
||||
int index = 0;
|
||||
|
||||
do {
|
||||
people->likesCheese = ((index % 3) == 0);
|
||||
people->id = index++;
|
||||
people = people->next;
|
||||
} while (people != NULL);
|
||||
}
|
||||
|
||||
void addPerson (Person **list, char *name) {
|
||||
Person *person = new(Person);
|
||||
strncpy_s(person->name, name, sizeof(person->name));
|
||||
|
||||
person->next = *list;
|
||||
*list = person;
|
||||
}
|
||||
|
||||
Gadget* deployGadget() {
|
||||
Gadget *gadget = new Gadget("Infrared Garden Gnome");
|
||||
|
||||
Person *pp = personList;
|
||||
while (pp != NULL) {
|
||||
if (strcmp(pp->name, "Wallace")==0 || pp->likesCheese) {
|
||||
gadget->use(pp);
|
||||
}
|
||||
pp = pp->next;
|
||||
}
|
||||
|
||||
return gadget;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
addPeople(&personList);
|
||||
initializePeople(personList);
|
||||
Gadget *gadget = deployGadget();
|
||||
gadget->print();
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
* REVIEWED: YES
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
enum StateMask { READ = 1, WRITE = 2, EXEC = 4, LOCKED = 8 };
|
||||
|
||||
typedef struct _person {
|
||||
int id;
|
||||
char name[32];
|
||||
bool likesCheese;
|
||||
struct _person *next;
|
||||
} Person;
|
||||
|
||||
void addPeople(Person **list);
|
||||
|
||||
void initializePeople(Person *people);
|
||||
|
||||
void addPerson (Person **list, char *name);
|
||||
|
||||
void declare();
|
Loading…
Add table
Add a link
Reference in a new issue