aboutsummaryrefslogtreecommitdiffstats
path: root/csci5271/hw1/hw1markup.md
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