Domanda Modificare il programma affinché si verifichi un errore di segmentazione

Andrea2323

Utente Iron
29 Gennaio 2024
1
1
0
7
Compito:
Leggete attentamente il programma in allegato. Viene richiesto di: Descrivere il funzionamento del programma prima dell’esecuzione
Riprodurre ed eseguire il programma nel laboratorio - le vostre ipotesi sul funzionamento erano corrette?
Modificare il programma affinché si verifichi un errore di segmentazione
Suggerimento: Ricordate che un BOF sfrutta una vulnerabilità nel codice relativo alla mancanza di controllo dell’input utente rispetto alla capienza del vettore di destinazione. Concentratevi quindi per trovare la soluzione nel punto dove l’utente può inserire valori in input, e modificate il programma in modo tale che l’utente riesca ad inserire più valori di quelli previsti.

#include <stdio.h>

int main () {

int vector [10], i, j, k;
int swap_var;


printf ("Inserire 10 interi:\n");

for ( i = 0 ; i < 10 ; i++)
{
int c= i+1;
printf("[%d]:", c);
scanf ("%d", &vector);
}


printf ("Il vettore inserito e':\n");
for ( i = 0 ; i < 10 ; i++)
{
int t= i+1;
printf("[%d]: %d", t, vector);
printf("\n");
}


for (j = 0 ; j < 10 - 1; j++)
{
for (k = 0 ; k < 10 - j - 1; k++)
{
if (vector[k] > vector[k+1])
{
swap_var=vector[k];
vector[k]=vector[k+1];
vector[k+1]=swap_var;
}
}
}
printf("Il vettore ordinato e':\n");
for (j = 0; j < 10; j++)
{
int g = j+1;
printf("[%d]:", g);
printf("%d\n", vector[j]);
}

return 0;


}
 
Compito:
Leggete attentamente il programma in allegato. Viene richiesto di: Descrivere il funzionamento del programma prima dell’esecuzione
Riprodurre ed eseguire il programma nel laboratorio - le vostre ipotesi sul funzionamento erano corrette?
Modificare il programma affinché si verifichi un errore di segmentazione
Suggerimento: Ricordate che un BOF sfrutta una vulnerabilità nel codice relativo alla mancanza di controllo dell’input utente rispetto alla capienza del vettore di destinazione. Concentratevi quindi per trovare la soluzione nel punto dove l’utente può inserire valori in input, e modificate il programma in modo tale che l’utente riesca ad inserire più valori di quelli previsti.

#include <stdio.h>

int main () {

int vector [10], i, j, k;
int swap_var;


printf ("Inserire 10 interi:\n");

for ( i = 0 ; i < 10 ; i++)
{
int c= i+1;
printf("[%d]:", c);
scanf ("%d", &vector);
}


printf ("Il vettore inserito e':\n");
for ( i = 0 ; i < 10 ; i++)
{
int t= i+1;
printf("[%d]: %d", t, vector);
printf("\n");
}


for (j = 0 ; j < 10 - 1; j++)
{
for (k = 0 ; k < 10 - j - 1; k++)
{
if (vector[k] > vector[k+1])
{
swap_var=vector[k];
vector[k]=vector[k+1];
vector[k+1]=swap_var;
}
}
}
printf("Il vettore ordinato e':\n");
for (j = 0; j < 10; j++)
{
int g = j+1;
printf("[%d]:", g);
printf("%d\n", vector[j]);
}

return 0;


}
Utilizza i tag per inserire il codice, che resta più ordinato e faciliti la lettura.
 
Ultima modifica:
Ovviamente qui non si fanno i compiti al posto tuo.

Comunque, se vuoi creare un problema a quel programma devi provare a modificare il valore massimo dei cicli che permettono di fare l' I/O dei dati del vettore.

Dato che il vettore è solo di 10 elementi, se le for arrivassero a 100, sarebbe un problema ...