blob: a870d158aaea5d81bcee3987fe6618a080de1c8e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# Homework 1
## Q1
## Q2
### A: Perl
After adding a name to the request, add a semicolon followed by the command. The semicolon is the shell command separator which allows it to parse commands.
#### Example Request
```
"?field-name=;perl+-e+'`command`'"
```
### B: C
## Q3
## Q4
### A
#### Mistake 1a: Potentially overloading the array
If the function is called with `to` larger than outer bound of the array, there is a buffer overflow that happens. For example, running it by default with an array of size 10 with a `to` of size 11 on gcc 11.1 causes it to crash because of stack smashing.
##### Mistake 1b: Underloading the array
If the function is called with `from` smaller than 0 will cause some values of the array to be replaced with other values from memory. It did not crash, but it is not the intended behavior.
#### Mistake 2:
#### Mistake 3:
### B: Same Signature
```c
void reverse_range(int *a, int from, int to) {
```
### C: Different Signature
```c
int* reverse_range(int arr[], int arrSize, int from, int to) {
if (from < 0 || to >= arrSize)
return NULL;
for (int i = from; i < to; i++) {
int temp = arr[i];
arr[i] = arr[to];
arr[to] = temp;
to--;
}
return arr;
```
## Q5
|